Windows XP上的for/f命令出现问题

3 windows syntax cmd batch-file

我正在使用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"
)
)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Tom*_*lak 7

这是因为当没有找到任务时tasklist.exe输出STDERR.该for /f循环得到看到STDOUT而已,所以如果python.exe没有运行,它没有任何的循环.

重定向STDERRSTDOUT(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"
  )
)
Run Code Online (Sandbox Code Playgroud)

^角色是这个工作必需的转义序列.

  • 此外,这是区分大小写的,因此它适用于"python.exe"但不适用于"Python.exe".使if语句"if/i %% A equ python.exe"使其不区分大小写. (2认同)