在DOS中打开csv文件
是否可以打开csv文件,例如:在DOS中打开csv文件,csv,dos,batch-file,Csv,Dos,Batch File,是否可以打开csv文件,例如: a,b,c,d,e,f,g,h 并让DOS读取它(在批处理文件中),检查数据,然后在特定条件下将其从文件中删除 伪代码: open csv file for each letter if letter is e remove e from csv file close and save csv file 编辑: 如果我将数据源从csv更改为: a b c d e f g h 那么我可以称之为: rename file.txt file
a,b,c,d,e,f,g,h
并让DOS读取它(在批处理文件中),检查数据,然后在特定条件下将其从文件中删除
伪代码:
open csv file
for each letter
if letter is e
remove e from csv file
close and save csv file
编辑:
如果我将数据源从csv更改为:
a
b
c
d
e
f
g
h
那么我可以称之为:
rename file.txt file.bak
for /f %%a in (file.bak) do (
set hmm=%%a
if !hmm!==e set hmm=helloworld
echo !hmm! >> file.txt)
虽然这会在新更改后打印出原始数据,如:
a
b
c
d
helloworld
f
g
h
a
b
c
d
e
f
g
h
使用/F的
,您可以浏览文本文件并处理每列的内容(称为标记),在其中可以选择分隔列的字符
为了将其从文件中删除,我想您必须重新创建一个新文件,在该文件中您可以决定写什么和不写什么。对于/F,您可以浏览文本文件并处理每列的内容(称为标记),从中可以选择分隔列的字符
为了将其从文件中删除,我想您必须重新创建一个新文件,在该文件中您可以决定写什么和不写什么。您可以使用for/f和use遍历令牌 set str=%str:e=%
删除不需要的令牌,然后使用“>”将其间接传递到另一个文件。您可以使用for/f和use遍历令牌 set str=%str:e=% 要删除您不需要的令牌,然后使用“>”将其间接发送到另一个文件。以下是我的修复方法:
rename file.txt file.bak
for /f %%a in (file.bak) do (
set hmm=%%a
if !hmm!==e set hmm=helloworld
echo !hmm! >> file.txt)
del file.bak
如果不删除bak文件,它会将txt和bak打印到新文件中!奇怪 以下是我的解决方案:
rename file.txt file.bak
for /f %%a in (file.bak) do (
set hmm=%%a
if !hmm!==e set hmm=helloworld
echo !hmm! >> file.txt)
del file.bak
如果不删除bak文件,它会将txt和bak打印到新文件中!奇怪 以下是Windows PowerShell 2中的一个基本示例:
$split = Get-Content "C:\temp\test.csv" | ForEach-Object {$_.Split(",") | Where-Object {$_ -ne "e"} }
[string]::join(",", $split) | Out-File -Encoding ASCII "C:\temp\testOUT.csv"
这将适用于基本情况(单行)。它有多行CSV的问题;也许有人的PS-fu比我能解决的多
我没有用边界条件(空文件、空行、由一个字母组成的行、相邻的逗号、所有e的行等)对此进行测试
对于具有列标题的CSV文件,PowerShell提供(以及导出CSV)。以下是Windows PowerShell 2中的一个基本示例:
$split = Get-Content "C:\temp\test.csv" | ForEach-Object {$_.Split(",") | Where-Object {$_ -ne "e"} }
[string]::join(",", $split) | Out-File -Encoding ASCII "C:\temp\testOUT.csv"
这将适用于基本情况(单行)。它有多行CSV的问题;也许有人的PS-fu比我能解决的多
我没有用边界条件(空文件、空行、由一个字母组成的行、相邻的逗号、所有e的行等)对此进行测试
对于具有列标题的CSV文件,PowerShell提供了(以及导出CSV)。批处理文件不适合这样做。考虑更丰富的语言(或电子表格-基于DOS的确实存在)。另外,它真的是DOS,还是Windows中的命令行?我正计划通过批处理文件运行它。我曾考虑使用VBScript,但在获得数据(在上面的示例中,字母“e”)后,我需要调用一个dos命令,并将该数据作为参数。@Seva:在这个网站上,我看到了一个或两个实际的dos问题。所有数据都表明,大多数人说DOS只是指“你在Windows上从来没有使用过的奇怪的灰色加黑色的东西”——即Windows命令处理器cmd。到目前为止,我已经放弃了对人们进行差异教育。这太令人伤心了;-)。也就是说,简单的CSV文件可以用
for/f
轻松解析,几乎没有问题。如果它确实是Windows命令行,那么Windows脚本主机(JS/VBS)和文件系统/TextStream对象就是答案。所有解析都是通过ReadLine()和String.split()完成的。批处理文件不适合这样做。考虑更丰富的语言(或电子表格-基于DOS的确实存在)。另外,它真的是DOS,还是Windows中的命令行?我正计划通过批处理文件运行它。我曾考虑使用VBScript,但在获得数据(在上面的示例中,字母“e”)后,我需要调用一个dos命令,并将该数据作为参数。@Seva:在这个网站上,我看到了一个或两个实际的dos问题。所有数据都表明,大多数人说DOS只是指“你在Windows上从来没有使用过的奇怪的灰色加黑色的东西”——即Windows命令处理器cmd。到目前为止,我已经放弃了对人们进行差异教育。这太令人伤心了;-)。也就是说,简单的CSV文件可以用for/f
轻松解析,几乎没有问题。如果它确实是Windows命令行,那么Windows脚本主机(JS/VBS)和文件系统/TextStream对象就是答案。所有的解析都是通过ReadLine()和String.split()完成的。我已经看到了一些FOR/F
的示例,我将做一些实验并报告!我已经看到了一些关于/F的的例子,我将做一些实验并报告!