Batch file 批处理脚本获取服务状态

Batch file 批处理脚本获取服务状态,batch-file,Batch File,在w7上,我希望使用psservice接收服务的状态,因为我希望稍后在远程计算机上执行此操作 我首先尝试让批处理脚本在本地机器上工作 我有两个问题:第一个问题是“D:/PsService.exe query Server”将查询包含名称“Server”的所有服务。我只想查询一个特定的服务(在本例中为“服务器”) 另一个更大的问题是,我的批处理脚本根本不工作,它只是“死掉”(CMD窗口立即关闭,没有执行pause命令,这使得调试非常困难) 我想将服务的状态存储在一个变量中,稍后我将使用该变量来比较

在w7上,我希望使用psservice接收服务的状态,因为我希望稍后在远程计算机上执行此操作

我首先尝试让批处理脚本在本地机器上工作

我有两个问题:第一个问题是“D:/PsService.exe query Server”将查询包含名称“Server”的所有服务。我只想查询一个特定的服务(在本例中为“服务器”)

另一个更大的问题是,我的批处理脚本根本不工作,它只是“死掉”(CMD窗口立即关闭,没有执行pause命令,这使得调试非常困难)

我想将服务的状态存储在一个变量中,稍后我将使用该变量来比较示例(如果%status%EQ“RUNNING”)

到目前为止,我的代码是:

FOR /F token=3 %%i IN ('D:/PsService.exe query Server 2> NUL | find /I "STATE"') DO   ( SET Status=%%i )
echo %Status%
pause

为什么CMD刚刚死了,我做错了什么?

以下内容对您有用

   @ECho off
   for /F "tokens=3 delims=: " %%H in ('D:/PsService.exe query "SERVICE" ^| findstr "        STATE"') do echo %%H

以下内容适合您

   @ECho off
   for /F "tokens=3 delims=: " %%H in ('D:/PsService.exe query "SERVICE" ^| findstr "        STATE"') do echo %%H

您可以使用
set/p myvariable=终止此脚本,而不是
pause
?:
等待用户输入。使用PowerShell可以让您的生活更轻松。若要查看它死亡的原因,您应该打开一个cmd窗口并在那里启动批处理。顺便说一句,这是for循环中的语法错误。您需要退出重定向和管道。在批处理中,您可以使用克拉来退出,而不是
暂停
,您可以使用
set/p myvariable=终止此脚本[y | n]?:
等待用户输入。使用PowerShell可以让您的生活更轻松。要了解它为什么会消亡,您应该打开一个cmd窗口并在那里启动批处理。顺便说一句,这是for循环中的一个语法错误。您需要退出重定向和管道。在批处理中,您可以使用carat进行退出,^it works!这解决了最大的问题。您不需要´´我不知道如何查询一个且仅查询一个服务?正在尝试D:/PsService.exe查询“服务器”我仍然查询以“服务器”开头的所有服务,而我只想查询名为“服务”的特定服务(在我的示例中)(仅此而已)。您好,我错误地在代码中键入了服务器,只是将服务器替换为“服务”。我希望它能正常工作!这解决了最大的问题。您碰巧不知道如何查询一个且仅查询一个服务?尝试D:/PsService.exe查询“Server”我仍然查询以“Server”开头的所有服务,而我只想查询名为“service”的特定服务(在我的示例中)(仅此而已).嗨,我在代码中错误地键入了服务器,只是用“服务”替换了服务器。我希望它能工作