由于Windows cmd语法非常复杂且不必要地复杂且难以阅读,因此我很难找到正确的键入方法。基本上我只是想创建一个运行的for循环:
sc查询| findstr SERVICE_NAME
然后从输出中获取服务并运行:
sc sdshow" SERVICE_NAME"
以下是我一直在尝试的事情:
for / f" tokens = 2 delims =" %a IN(" sc query | findstr SERVICE_NAME")DO sc sdshow%a
但显然分隔符是在我输入的命令中选择第二个标记,而不是输出。我认为它类似于:" cut -d" " -f2,"但显然不是。甚至还有一种方法可以在Windows cmd语法的可怕怪物中做到这一点吗?
答案 0 :(得分:2)
对于它的价值,你真的关闭。在批处理中,您使用单引号(for
)操作具有'
循环的命令的输出。此外,您需要使用^
转义命令内部的管道。
在批处理文件中,您需要使用两个%
符号调用for循环变量(如果您在命令行中键入它,则只需要一个)。
for /f "tokens=2 delims= " %%a in ('sc query ^| findstr "SERVICE_NAME"') do sc sdshow %%a