如何过滤Windows命令行中用引号分隔的特定列

问题描述 投票:0回答:1

我需要过滤特定的列,该列在CMD中用引号分隔。有谁知道怎么做吗?

我知道有这样的事情

  for /f "tokens=1 delims=." %%a in ("%VARIABLE%") do (
  echo %%a
  )

但是如果分隔符是引号,这个命令就不能用了... 例如这里:

BINARY_PATH_NAME   : "C:\Program Files\Application\Application.exe" -c "C:\Program Files\Application\Application.conf" -f=false

我需要过滤应用程序exe文件的路径和应用程序conf文件的路径...

提前谢谢您

详细提到了

windows batch-file cmd command-line
1个回答
0
投票

对于您暗示和显示的任务,我不太确定您是否特别需要使用双引号作为分隔符进行过滤。我这样说的原因是您假设双引号始终存在于字符串中,如果文件不存在于使用问题字符的位置,则情况可能并非如此。

因此,我建议您使用两个已知信息(即文件扩展名)进行过滤。

批处理文件示例,(假设您的源数据是

qc
sc.exe
选项的结果,根据需要更改
ServiceName
):

@For /F "Tokens=1,2,*" %%G In ('%SystemRoot%\System32\sc.exe qc ServiceName 2^>NUL') Do @If "%%G" == "BINARY_PATH_NAME" For %%J In (%%I ) Do @If /I "%%~xJ" == ".exe" (Echo Application path is: %%~J ) Else If /I "%%~xJ" == ".conf" Echo Configuration file path is: %%~J
或者直接在cmd.exe中:

For /F "Tokens=1,2,*" %G In ('%SystemRoot%\System32\sc.exe qc ServiceName 2^>NUL') Do @If "%G" == "BINARY_PATH_NAME" For %J In (%I) Do @If /I "%~xJ" == ".exe" (Echo Application path is: %~J) Else If /I "%~xJ" == ".conf" Echo Configuration file path is: %~J
    
© www.soinside.com 2019 - 2024. All rights reserved.