[英]Parse result of batch command output in windows
我只想知道我们如何解析批处理命令的输出。 以下是Iam尝试获取服务名称的小示例。
C:\Users\pande\Desktop>sc qdescription "test"
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: test
DESCRIPTION: C:\Program Files (x86)\TEST\small.exe /service
这里的问题是,根据以上结果,我想将以下部分保留为批处理文件变量。
C:\Program Files (x86)\TEST\
通过浏览,我们可以通过/ f实现此功能,但实际上不知道如何获得它。
谁能帮我实现这一目标。
提前致谢。
@ECHO OFF
SETLOCAL
SET "DESC="
FOR /f "tokens=1*delims=: " %%a IN ('sc qdescription "bonjour service" ') DO (
IF "%%a"=="DESCRIPTION" SET "desc=%%b"
)
ECHO DESC=%DESC%
:: Setting DESC to the string expected - then ECHOing to prove
SET "DESC=C:\Program Files (x86)\TEST\small.exe /service"
ECHO DESC=%DESC%
:: Now remove part past '/' and select drive/path from assumed filename
FOR /f "tokens=1delims=/" %%a IN ("%desc%") DO SET "desc=%%~dpa"
ECHO DESC=%DESC%
:: Now remove terminal "\"
SET "desc=%desc:~0,-1%"
ECHO DESC=%DESC%
:: Extension - to remove the last "leaf" directoryname
::
FOR /f "delims=" %%a IN ("%desc%") DO SET "desc=%%~dpa"
ECHO DESC=%DESC%
:: Now remove new terminal "\"
SET "desc=%desc:~0,-1%"
ECHO DESC=%DESC%
GOTO :EOF
你需要保存一个文件名为本文whateveryoulike
蝙蝠然后运行它作为whateveryoulike
从命令提示符。
由于无法访问您的计算机,因此我在计算机上使用了已安装的服务。 您需要用您的bonjour service
名代替上面的bonjour service
。
然后,将desc
设置为您显示的值,然后将其处理到所需的部分。
修改以删除最后一个目录名叶子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.