在管道中使用时查找命令不起作用
Find command not working when used in pipe
echo off
:loop
tasklist /fi "imagename eq Notepad.exe" | find "INFO:" > nul
if errorlevel 1 goto loop
wordpad.exe
这在 XP 中不起作用。它在 Windows 7.
中运行良好
当任务列表中不存在 notepad.exe 时,tasklist /fi "imagename eq Notepad.exe"
将 "INFO:" 行转储到 Windows XP 中的标准错误。您可以使用 2>&1
将 stderr 重定向到 stdout,但直接 find /i "notepad"
更容易。
附带说明一下,您可以使用 conditional execution.
而不是 if errorlevel 1
@echo off
setlocal
:loop
rem // Output nothing for the following code block.
>NUL 2>NUL (
rem // Make sure notepad is not running before continuing.
tasklist /fi "imagename eq notepad.exe" | find /i "notepad" && (
rem // Notepad is in tasklist. Sleep 1 second, then check again.
timeout /t 1 /nobreak || ping -n 2 localhost
goto loop
)
)
wordpad.exe
echo off
:loop
tasklist /fi "imagename eq Notepad.exe" | find "INFO:" > nul
if errorlevel 1 goto loop
wordpad.exe
这在 XP 中不起作用。它在 Windows 7.
中运行良好当任务列表中不存在 notepad.exe 时,tasklist /fi "imagename eq Notepad.exe"
将 "INFO:" 行转储到 Windows XP 中的标准错误。您可以使用 2>&1
将 stderr 重定向到 stdout,但直接 find /i "notepad"
更容易。
附带说明一下,您可以使用 conditional execution.
而不是if errorlevel 1
@echo off
setlocal
:loop
rem // Output nothing for the following code block.
>NUL 2>NUL (
rem // Make sure notepad is not running before continuing.
tasklist /fi "imagename eq notepad.exe" | find /i "notepad" && (
rem // Notepad is in tasklist. Sleep 1 second, then check again.
timeout /t 1 /nobreak || ping -n 2 localhost
goto loop
)
)
wordpad.exe