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)
提前致谢.
这是因为当没有找到任务时tasklist.exe输出STDERR.该for /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"
)
)
Run Code Online (Sandbox Code Playgroud)
该^角色是这个工作必需的转义序列.