0

我没有很长时间编码,但我正在寻找解决一些让我登录救援的问题,在重新启动期间登录救援会经常失去连接并导致程序由于缺乏更好的条款而中断,目前解决问题的方法是删除看起来像的服务LMIRescue_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

所以我想做的是创建一个可以删除服务的批处理,LMIRescue_ 或者如果这不可能有一个解决方法,我可以找到服务并获取输出并使用它来删除

谁能给我一个示例,说明如何使用批处理来查找服务并自行删除它,或者至少为我指明正确的方向?

我努力了

@echo off
set /p UserInputPath1= What is the First Service Name?
set /p UserInputPath2= What is the Second Service Name?
net stop %UserInputPath1%
net stop %UserInputPath2%
sc delete %UserInputPath1%
sc delete %UserInputPath2%

这可行,但它需要用户输入并需要额外的时间,而这样做的重点是避免浪费时间

如果通配符可以工作,我可以这样做

net stop LMIRescue*
sc delete LMIRescue*
net stop LMIRescue*
sc delete LMIRescue*

有没有办法使用通配符删除服务?除了sc Delete "ServiceName" 和/或我如何使用批处理来查找和输出服务的名称然后使用它来删除它之外,还有什么方法可以批量删除服务。

4

1 回答 1

0

您可以使用该sc query命令检索当前在本地计算机上运行的所有活动服务的名称。该findstr命令可用于过滤不符合给定条件的任何内容(在此示例中,仅以SERVICE_NAME: LMIRescue保留开头的行)。可以使用命令将剩余的行标记化,以for /f将检索到的服务名称临时存储在 for-loop variable%%j中。

@for /f "tokens=1,*" %%i in ('"sc query | findstr /b /c:"SERVICE_NAME: LMIRescue""') do @(
  net stop "%%~j"
  sc delete "%%~j"
)
于 2017-08-10T17:44:47.533 回答