tasklist.exe, Win Server 2008 R2, имя файла содержит пробелы

У меня есть клиент с FileMaker Pro Advanced от Apple на Windows Server 2008 R2. Связанный исполняемый файл — «FileMaker Pro Advanced.exe» (обратите внимание на пробелы). У моего клиента возникла проблема с закрытием FileMaker "чем-то"; частью одного из решений является написание пакетного файла для запуска каждые 15 минут, который запускает FileMaker, если он не запущен. Я помогаю с пакетным файлом.

Я предложил код, основанный на этом:

set target=FileMaker Pro Advance.exe
set startWith=(batch file that starts FileMaker)
tasklist /FI "IMAGENAME eq '%target%’" /NH 2>NUL | find /I "%target%">NUL
if "%ERRORLEVEL%"=="1" %startWith%
if "%ERRORLEVEL%"=="0" goto :EOF

Обратите внимание: конструкция командной строки tasklist требует использования набора кавычек; Я использовал двойные кавычки для них. Наличие пробелов в имени файла, казалось бы, требует еще одного набора кавычек; Я использовал одинарные кавычки выше.

Моя техника не работает; Я получаю сообщение об ошибке о неправильно сформированной команде. Вздох.

У кого-нибудь есть обходной путь?

При отсутствии лучшего предложения я попрошу системного администратора позволить мне переименовать этот файл во что-то вроде «FileMakerProAdvanced.exe»; это должно работать. Я получу это разрешение только в процентном отношении, когда попрошу. Мне нужно что-то еще на случай, если они отклонят мою просьбу.

(Соколиные глаза среди вас заметят, что имя файла состоит из 26 символов. Кажется, tasklist имеет ограничение в 25 символов. Я могу обойти это (в команде find , например) путем поиска «FileMaker Pro Advanced.ex»; это все, что список задач обеспечивает найти. И я могу использовать двойные кавычки в найти команда.)

Заранее спасибо за решения и сочувствие.


person BaldEagle    schedule 21.10.2015    source источник


Ответы (1)


У вас не будет проблем с пробелами в фильтре имени изображения, поэтому нет необходимости в обходном пути, просто удалите внутренние одинарные кавычки.

set "target=FileMaker Pro Advance.exe"
tasklist /fi "imagename eq %target%"

И проблема с длиной вывода как раз для режима столбца. Вы можете изменить формат вывода csv

tasklist /fi "imagenane eq %target%" /nh /fo:csv | find /i "%target%" >nul

Или, поскольку вы не извлекаете какие-либо данные из вывода, вместо того, чтобы скрывать заголовки, поскольку они присутствуют только в том случае, если найден соответствующий процесс, проверьте наличие заголовков.

tasklist /fi "imagenane eq %target%" | find "========" >nul
person MC ND    schedule 21.10.2015
comment
Звездный ответ. Своевременно (за час!) Хорошо сформулировано. Дал нам новые темы для размышлений. Ваш совет работает. Спасибо. Много раз. Мы глубоко ценим время, которое вы потратили на ответ. [изменить орфографию] - person BaldEagle; 23.10.2015