如何在cmd中使用管道或重定向for循環?在for循環中包含管道和重定向
我的示例腳本(目的是看是否有一系列的具體方案/服務正在運行:
for %%m in (**{list of individual program names}**) do (
tasklist /FI "IMAGENAME eq %%m" /NH ^| find /i "%%m"
if "%errorlevel%" EQU "1" set /a err_count=%err_count%+1
echo checking tasklist item %%m , count is %err_count%
)
我需要管通過查找,還是沒有錯誤的任務列表會一直完成,即使程序不運行。
我已經想盡變化我能想到的在循環逃脫|
和>
,並沒有什麼迄今已奏效。
的/f
定界符OPTI只有當命令位於第1行的括號內時纔有效。我想要循環內的命令。
如果您說出您看到的錯誤或錯誤行爲與您期望看到的情況相關將會很有幫助。你不需要在'for'循環中轉義管道或重定向。打開echo以查看您的批處理文件正在運行的命令。這工作正常:'for %% m in(chrome.exe abc.exe notepad ++。exe)do tasklist/fi「IMAGENAME eq %% m」/ nh | find/i「%% m」>> results.txt' – indiv
此外,您需要在循環中的'err_count'周圍使用延遲擴展。放入'setlocal EnableDelayedExpansion',然後在循環中使用'!err_count!'。在命令行上鍵入'help set'或進行谷歌搜索以獲取更多信息。 – indiv