我在批处理文件中有一个FOR / F循环,它从Outlook导出的联系人中读取CSV输出。 CSV输出中的前3列对我来说是最重要的,所有列都必须填写。由于无法过滤导出的联系人,我编写了一个简单的批处理文件,该文件使用DELIMS =在FOR / F使用循环中读取CSV输出,忽略前3列中任何一行中没有数据的所有行。 有些行以三个逗号开头(因此有3个空列),但第一个令牌随后会加载第四列的数据。有人可以解释一下吗?
答案 0 :(得分:1)
正如已经指出的那样,FOR / F命令将连续分隔符视为单个分隔符。如果所有字段都被引用,那么这不是问题。现在,理论上您可以使用两个FOR / F命令来解析CSV。第一个FOR / F将整行分配给单个令牌。然后可以将该标记分配给环境变量,然后您可以使用字符串替换来引用所有空字段。然后将该变量传递给第二个FOR / F命令进行处理。
另一种选择是使用第二个批处理文件来解析CSV文件。它实际上是Dbenham编写的混合批/ jscript。它为您完成所有工作。 http://www.dostips.com/forum/viewtopic.php?f=3&t=5702
@echo off
for /f "tokens=1-3 delims=," %%A in ('parseCSV ^<test1.csv') do (
echo -------------
echo(A=%%~A
echo(B=%%~B
echo(C=%%~C
)