【问题标题】:For loop for checking the 'state' of certain windows' services用于检查某些 Windows 服务的“状态”的 For 循环
【发布时间】:2011-10-07 11:44:27
【问题描述】:

services.txt 包含:-

即插即用
后台处理程序
dhcp


我想检查文件services.txt 中指定的某些服务的状态。我正在为此使用 for 循环。

@echo off
for /f %%a IN ('type services.txt') do call :chkservice %%a
goto :eof 

:chkservice 
sc query %a%

我没有得到三个指定服务的输出,而是得到相当于命令sc query 的三倍的输出(我猜)。

为了调试,我尝试检查变量 a 是否正确获取值并尝试了此版本的代码:-

@echo off
for /f %%a IN ('type services.txt') do call :chkservice %%a
goto :eof

:chkservice
@echo on
echo %a%

此代码仅显示 spoolerdhcp。为什么不是即插即用?我相信这两个问题是相关的,但不确定如何。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: batch-file for-loop


    【解决方案1】:

    如果你调用一个函数,你的参数在 %1,%2,...%n 而不是%a%
    for 循环的参数在该循环之外几乎是不可见的。

    所以你的代码应该是这样的

    @echo off
    for /f %%a IN ('type services.txt') do call :chkservice %%a
    goto :eof
    
    :chkservice
    echo %1
    goto :eof
    

    【讨论】:

    • 我可以很容易地从你的回答中看出我的问题是多么愚蠢。但这就是学习的方式。无论如何,非常感谢您的帮助。
    • 批量,没有什么容易或明显的
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多