【发布时间】:2018-07-12 10:20:09
【问题描述】:
感谢nssm,我必须创建一个批处理文件来检查我的服务状态。我使用的命令是nssm status MyService,它返回SERVICE_STOPPED 或SERVICE_RUNNING。我对批处理文件没有很多经验,所以我按照一些 SO 答案来实现我想要的,这是我的文件:
FOR /F "tokens=*" %%F IN ('nssm status MyService') DO (
SET var=%%F
)
ECHO %var%
但是当我回显输出时,我只能得到预期输出的第一个字符。
var 等于S
我尝试更改令牌和 delims 参数,但没有成功,它总是返回 S
我错过了什么?是 FOR /F 参数吗?或者我如何设置我的变量?
【问题讨论】:
-
如果该命令所做的只是输出
SERVICE_STOPPED或SERVICE_RUNNING,那么您使用的代码将不会截断输出。 -
NSSM 可以是 Unicode。你为什么不使用 Windows 命令。 NSSM 不是一个服务控制程序,即使它也可以做到这一点。见
for /f "usebackq tokens=2 delims=," %A in (wmic service where "name='rpcss'" get state /format:csv) Do echo %A -
@Squashman 当我在命令行中运行
nssm status MyService时,它返回SERVICE_RUNNING,是否可以在命令行和批处理文件中运行时产生不同的输出? -
@CatCat 我使用 NSSM 将批处理文件作为服务运行,所以当它崩溃时它会重新启动,你给我的代码总是返回给我
RUNNING -
Rpcss 一直在运行。否则一切都会崩溃。
标签: windows batch-file cmd