0

特定のプロセス (20 個のプロセスのリストなので、すべてをリストするわけではありません) を確認し、どのプロセスが実行されているかを記録する必要があります。次に、それらを強制終了し、他のコードを実行して、最後に再度開く必要があります...コードは、すべてのプロセスが終了した場合にのみ正常に実行されます。

提案や、コードが機能しない理由を説明してくれる人を歓迎します。

私がやっていることは、タスクリストを使用して各プロセスをチェックし、結果をファイルに書き込んでから、プロセスが実行されていないファイルの行を削除しようとしています(つまり、「INFO: ..." メッセージ)

ファイルの各行を一度に 1 行 (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 に答える