windows - Windows XP 上 for/f 命令的问题

标签 windows syntax batch-file cmd

我使用的是 Windows XP Service Pack 3,并且在 Windows 注册表中默认启用命令扩展。 不知何故,以下命令在这个版本的 Windows 上不起作用,但如果我在 Windows Server 2003 或 Windows Vista Business 上运行它,它就可以正常工作。有什么线索吗?

问题是在 Windows XP 上,/f 选项似乎根本不起作用,命令的 do 部分永远不会执行。

这是命令:

for /f "tokens=1 delims=: " %A in ('tasklist /FI "IMAGENAME eq python.exe" /NH') do (
If "%A" == "python.exe" (
    echo "It's running"
) Else (
    echo "It's not running"
)
)

提前致谢。

最佳答案

那是因为tasklist.exe在没有找到任务时输出到STDERRfor/f 循环只能看到 STDOUT,所以如果 python.exe 没有运行,它就没有什么可以循环的。

STDERR 重定向到 STDOUT (2>&1) 有效:

for /F "tokens=1 delims=: " %A in ('tasklist /FI "IMAGENAME eq python.exe" /NH 2^>^&1') do (
  if "%A"=="python.exe" (
    echo "It's running"
  ) else (
    echo "It's not running"
  )
)

^ 字符是此工作所需的转义序列。

关于windows - Windows XP 上 for/f 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359232/

相关文章:

batch-file - 批;使用 for 在变量内运行命令

variables - 获取当前正在执行的批处理脚本的父文件夹名称

c# - 将字符串传递给 C# 可执行文件

windows - Chef 无法在 Windows 上找到 crypto_data_bag_secret

css - CSS生成器SASS需要拒绝诸如margin :10px ?(冒号后没有空格)之类的行是否有原因

mysql - before update 触发器生成哈希的语法

c# - 使用 Java 或 C# 调整窗口大小

windows - 如何以管理员身份从 Bamboo 运行批处理脚本?

java - "Syntax error on token "模块 ", interface expected"

windows - 批处理文件 : pass parameter with white spaces to function