我正在尝试将 CSV 文件中的列加载到变量中。我的 CSV 文件包含空列,因此可以有 ,,
,它似乎被以下内容忽略:
FOR /F "tokens=3 delims=," %%a in (csvfile.csv) do (
set date=%%a
echo %%a
)
因此,如果文件 csvfile.csv
包含
fred,wilma,tony, john, greg, wilber, blake
chris,,steve,deon,bryan,mark,anthony
我想要结果:
tony
steve
但我得到:
tony
deon
如果我在空列中放置一个空格,这将按预期工作。
如何设置 delims
使其不忽略空列?
最佳答案
for
将连续分隔符视为一个。在大多数情况下,这很有帮助。有时并非如此。
所以你必须以 for
可以按你的预期处理的方式编写你的行。
将文件的每一行作为一个整体读取,在开头和结尾添加引号,并将每个 ,
替换为 ","
,结果为
"chris","","steve","deon","bryan","mark","anthony"
这可以很高兴地用另一个 for
进行解析。 %%~b
中的波形符删除周围的引号。
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=*" %%a in (csvfile.csv) do (
set line="%%a"
for /f "tokens=3 delims=," %%b in ("!line:,="^,"!") do echo %%~b
)
关于windows - 批处理文件标记忽略空分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36372429/