我对 Windows 批处理文件中的字符串引号有一些疑问。我尝试解析一个 csv 文件(分隔)和多行条目。我必须只写出第四个 sperator 之后的字符串作为文本文件。结果必须包括新行和引号。
输入:
"1","50","1","Warning! Q1: Value too high [W-0001]"
"2","49","1","Warning! Q1: Value too low [W-0002]"
"3","48","1","Warning! Q1: Value changing too fast.
Check for endless loop[W-0003]"
输出:
"Warning! Q1: Value too high [W-0001]"
"Warning! Q1: Value too low [W-0002]"
"Warning! Q1: Value changing too fast.
Check for endless loop[W-0003]"
这对于没有换行符的字符串来说效果很好。
for /F "tokens=1-4 skip=4 delims=," %%a in (input.csv) do @echo %%d >> output.txt
我试过了但是语法错误
for /F "delims=, tokens=1-4" %%a in (input.csv) do call :loopbody %%a %%b %%c %%d
goto :eof
if [%4]==[] goto :test
echo %4
goto :eof
:test
echo %1
错误是因为字符串开头的引号
Syntaxfehler.
C:\>if ["Warning Value changing too fast.]==[] goto :test
如何处理带引号的变量值?
最佳答案
这适用于您的数据:
@echo off
for /F "delims=, tokens=1-3,*" %%a in (input.csv) do (
set "aa="
set "aa=%%d"
if not defined aa (
>>file.out echo %%a
) else (
>>file.out echo %%d
)
)
关于windows - 如何处理 Windows 批处理文件中带引号的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013424/