2012-07-25 2 views
0

특정 프로세스 (20 개 프로세스 목록)를 확인하고 실행중인 프로세스를 기록해야합니다. 그렇다면 그들을 죽이고, 다른 코드를 실행하고, 마지막으로 다시 열어야합니다. 코드는 모든 프로세스가 종료 된 경우에만 성공적으로 실행됩니다.txt 파일에서 줄을 한 번에 꺼내십시오.

모든 제안을 환영 할뿐입니다. 아니면 내 코드가 작동하지 않는 이유를 설명하는 누군가를 환영합니다.

내가 해왔 던 작업 목록을 사용하여 각 프로세스를 확인하고 파일에 결과를 기록한 다음 프로세스가 실행되지 않는 파일의 행을 제거하려고합니다 (예 : "INFO : ..."메시지)

나는 전에 비슷한 파일을 한 번에 하나씩 가져 와서 (for 루프에서) 텍스트 문자열을 대체했다는 것을 알고있다. 그 파일을 다른 파일에 보냈습니다. (아마도 가장 효율적인 방법은 아니지만 효과적이었습니다). 사람이 할 수있는 더 좋은 방법을 알고 있다면 어떤 이유

, 나는

... 이제 (실패 whch) 내가있어 코드

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

감사합니다. 내가 원했던 것은 아니지만이 코드를 편집하여 내가 필요로하는 것을 정확하게 수행 할 수있었습니다. - Fnal 코드가 이제 답변입니다. –

관련 문제