2

Я в основном хочу объединить следующие наборы команд. Другими словами, мне нужно проверить, запущен ли какой-либо исполняемый файл, существующий в c:\apps, и, если есть, убить их. Когда эти команды будут выполнены, я сделаю робокопию для обновления файлов в c:\apps. Этот сценарий будет развернут с помощью SCCM. Из-за этого мне нужно, чтобы все команды возвращали уровень ошибки 0, иначе он сообщит о неудачном развертывании.

tasklist 2>NUL | find /I /N "processname.exe">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im processname.exe

а также

for /r c:\apps\ %%G in (*.exe) do taskkill /F /IM %%~nxG

2 ответа2

1

Я предлагаю что-то вроде:

Процесс WMIC, ГДЕ "ExecutablePath как 'C:\Apps\%%'" УДАЛИТЬ

Там есть апостроф, за которым сразу следуют кавычки, так что вы можете просто скопировать и вставить его.

Так что это всего лишь одна довольно простая строка (а не командный файл).

Это довольно мощный и гибкий метод. Так что, если это не работает так, как вы думаете, поиграйте с этим. Вероятно, будет свойство, которое будет уникальным для программ, которые вы хотите убить. Пример для исследования деталей доступен по адресу: taskkill - завершить задачи с заголовками окон, заканчивающимися определенной строкой: ответ TOOGAM, который представляет довольно похожий сценарий.

0

Посмотрите эту пакетную работу для вас.

@echo off

pushd c:\apps
FOR %%A IN (*.exe) do (
tasklist /FI "IMAGENAME eq %%A" 2>NUL | find /I /N "%%A">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im %%A
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .