У меня есть командный файл, который должен убивать процессы, которые соответствуют ключевому слову.Вот мой командный файл:
@echo off
REM tkill.bat
IF [%1] == [] GOTO Syntx
tasklist | find /i "%1%" > ttt.txt
set /p line=<ttt.txt
for /f %%G in ("%line%") do set "pp=%%G"
if [%pp] == [] GOTO endit
taskkill /f /im %pp%
del ttt.txt
goto endit
:syntx
echo Syntax:
echo tkill partial_process_name
:endit
set line=
Допустим, я хочу уничтожить все процессы браузера Opera.Итак, я запускаю:
tkill opera
и получаю этот вывод
C:\Windows\system32>tkill opera
SUCCESS: The process "opera.exe" with PID 3572 has been terminated.
SUCCESS: The process "opera.exe" with PID 9320 has been terminated.
SUCCESS: The process "opera.exe" with PID 6628 has been terminated.
SUCCESS: The process "opera.exe" with PID 2220 has been terminated.
SUCCESS: The process "opera.exe" with PID 4184 has been terminated.
SUCCESS: The process "opera.exe" with PID 5816 has been terminated.
SUCCESS: The process "opera.exe" with PID 9816 has been terminated.
SUCCESS: The process "opera.exe" with PID 7416 has been terminated.
SUCCESS: The process "opera.exe" with PID 684 has been terminated.
SUCCESS: The process "opera.exe" with PID 4688 has been terminated.
Итак, я проверяю, есть ли какие-то процессы-отставатели
C:\Windows\system32>tasklist | find /i "opera"
C:\Windows\system32>
Их нет.Затем я снова запускаю ту же команду и вижу результат:
tkill opera
ERROR: The process "opera.exe" not found.
Вот моя проблема: в памяти нет процесса с именем opera.exe.Следовательно, моя команда tasklist | find /i "%1%" > ttt.txt
должна привести к пустому файлу.Тем не менее, имя opera.exe где-то застревает до тех пор, пока я не закрою приглашение dos и не открою новое, или не выполнил ту же команду с другим именем процесса, которое фактически выполнялось, и был убит.Затем новое имя застревает в памяти, например:
C:\Windows\system32>tkill notepad.exe
SUCCESS: The process "notepad.exe" with PID 5952 has been terminated.
C:\Windows\system32>tkill notepad.exe
ERROR: The process "notepad.exe" not found.
C:\Windows\system32>tkill neon
ERROR: The process "notepad.exe" not found.
C:\Windows\system32>
В моем понимании чего-то не хватает, как присваиваются переменные Windows, но чего не хватает, я не могу понять.Любая помощь приветствуется.