繁体   English   中英

在Windows中解析批处理命令输出的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM