0

我需要检查某些进程(它是 20 个进程的列表,所以不会全部列出),并记录哪些进程正在运行。然后我需要杀死它们,运行一些其他代码,最后重新打开它们......只有在所有进程都结束后,代码才会成功运行。

我欢迎任何建议,或者只是有人解释为什么我的代码不起作用。

我一直在做的是使用任务列表检查每个进程,并将结果写入文件,然后我试图删除进程未运行的文件行(即我得到一个“信息: ...“ 信息)

我知道我以前做过类似的事情,我一次取一个文件的每一行(在 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)来完成,或者我会很高兴有人至少修复上述代码.

谢谢

4

1 回答 1

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
于 2012-07-25T22:55:45.337 回答