2012-07-25 202 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