windows - 如何处理 Windows 批处理文件中带引号的变量值

标签 windows variables for-loop batch-file quotes

我对 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/

相关文章:

c++ - 为什么会出现这些点(c++ dirent.h)

function - 带有函数输出的 Powershell 格式字符串

javascript - 无限循环运行 5 次后重置

c++ - 如何避免重复打印相同的内容?

python - 为 python 2.7 编译 libdnet

c - 不读取注册表的 UAC 状态

javascript - 一个函数在不同的控制台中给出不同的结果

c - C中的无限循环,有什么问题吗?

java - 将数组压缩为数字

java - alter Windows 文件中的 krb5.ini 文件去哪儿了?