如何过滤特定列,这是由引号分隔在windows命令行

db2dz4w8  于 12个月前  发布在  Windows
关注(0)|答案(2)|浏览(142)

我需要过滤特定的列,这是由引号在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文件.
提前感谢您
详细提及

lmyy7pcs

lmyy7pcs1#

对于你已经暗示和显示的任务,我不确定你是否需要使用双引号作为一个过滤器。我这么说的原因是你假设双引号总是存在于字符串中,如果文件不存在于使用问题字符的位置,情况可能就不是这样了。
因此,我建议您使用两个已知的过滤器,即文件扩展名。
批处理文件示例,(假设源数据是sc.exeqc选项的结果,* 根据需要更改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

vq8itlhq

vq8itlhq2#

鉴于你的样本数据不足

@ECHO OFF
SETLOCAL

SET "variable=BINARY_PATH_NAME   : "C:\Program Files\Application\Application.exe" -c "C:\Program Files\Application\Application.conf" -f=false"
SET "var1="
FOR %%e IN (%variable%) DO IF "%%e" neq "%%~e" IF DEFINED var1 (SET "var2=%%e") ELSE (SET "var1=%%e")
SET var

GOTO :EOF

字符串
简单地将variable作为列表处理,并通过比较%%e%%~e来检测元素中的引号。

相关问题