Batch file 在批处理脚本中捕获tabadmin status命令的输出
我想在批处理脚本中捕获tabadmin status命令的输出,并打印与关闭的服务相关的不同消息。 例如:tabadmin状态的输出——详细:Batch file 在批处理脚本中捕获tabadmin status命令的输出,batch-file,cmd,tableau-api,Batch File,Cmd,Tableau Api,我想在批处理脚本中捕获tabadmin status命令的输出,并打印与关闭的服务相关的不同消息。 例如:tabadmin状态的输出——详细: 'Tableau Server Data Engine' (5980) is running. 'Tableau Server Coordination Service 0' (7528) is running. 'Tableau Server Search and Browse 0' (10172) is running. 'Tableau Serve
'Tableau Server Data Engine' (5980) is running.
'Tableau Server Coordination Service 0' (7528) is running.
'Tableau Server Search and Browse 0' (10172) is running.
'Tableau Server Tabadmin Service 0' (4788) is running.
'Tableau Server Application Server 0' (9876) is running.
我想知道所有未运行的服务并打印它们。这个批处理代码怎么样
@echo off
for /F "tokens=1,3* delims='()" %%A in ('tabadmin.exe status --verbose') do (
if "%%C" == " is running." (
echo "%%A" is running with identifier %%B.
) else (
echo "%%A" is not running.
)
)
FOR的命令在后台以cmd/C
启动的单独命令过程中执行命令行tabadmin.exe status--verbose
,并捕获写入处理STDOUT的所有输出
然后,FOR逐行处理捕获的输出,忽略空行和以分号开头的行,这些分号在捕获的输出中不存在
使用指定的分隔符'()
将行拆分为子字符串(标记)
“
之间的第一个子字符串很有趣,因此使用标记=1
引用。它被分配给指定的循环变量A
第二个子字符串只是“
与(
)之间的空格字符。此空格字符不需要,因此被忽略
第三个子字符串是圆括号之间的标识符编号。该字符串很重要,因此在tokens=
选项中用3
引用。它被分配给指定循环变量A
之后的下一个循环变量,根据该变量是循环变量B
最后一个子串是)
之后直到行尾的所有内容,因为*
之后3
在标记=1,3*
的末尾,它被分配给循环变量C
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
echo/?
获取/?
如果/?
选项卡管理状态--verbose>log.txt 2>&1
?如果是,结果如何?