2012-07-25 247 views
0

我需要檢查某些進程(其20進程列表,因此不會列出所有進程),並記錄哪些進程正在運行。然後我需要殺死它們,運行一些其他代碼,並最終重新打開它們......只有當所有進程都結束時,代碼才能成功運行。批量刪除txt文件中的行

我歡迎任何建議,或只是有人解釋爲什麼我的代碼不起作用。

我一直在做的是使用任務列表來檢查每個進程,並將結果寫入文件,然後我試圖刪除該進程沒有運行的文件的行(即我得到一個「INFO:...」消息)

我知道我之前做過類似的事情,我一次一個地讀取文件的每一行(在for循環中),將一串文本並將編輯後的行發送到另一個文件(這可能不是實現它的最有效的方式,但它工作正常)。

出於某種原因,我不能現在如果有人有更好的方式來做到知道複製它...

我有代碼(界河失敗)是

SETLOCAL ENABLEDELAYEDEXPANSION 
cd\ 
for /f "tokens=* delims= " %%a in (somefile.txt) do (
set q=INFO: No tasks are running which match the specified criteria. 
set r=%%a 
set s=!r:%q%=! 
echo %s% >>test.txt 
) 

我需要什麼,我很樂意改變我的計劃,但它確實需要通過批處理(CMD)來完成,否則我會很高興有人修復上面的代碼。

謝謝

回答

1

試試這個代碼。雖然我不確定輸出文件是否與您想要的一致。如果包含任何空格,請確保使用雙引號括住該參數。

taskchk.cmd

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
if "%1" == "" (
    echo Please specify criteria. 
    echo e.g.: taskchk myprocess.exe 
    goto :eof 
) 
cd\ 
type nul>test.txt 
set found=0 
for /f "tokens=*" %%a in ('tasklist /nh') do (
    for /f "tokens=1" %%b in ("%%a") do (
    if /i "%%b" == "%~1" (
    set found=1 
    ) else (
    echo %%a>>test.txt 
    ) 
) 
) 
if %found% == 0 echo INFO: No tasks are running which match the specified criteria.>>test.txt 
+0

感謝。雖然不是我想要的,但是我設法編輯了這些代碼,並使其完全符合我的需求。 - 最後的代碼現在在你的答案中 – 2012-07-26 10:41:26