Проверка того, что конкретный файл bat mybatch.bat
работает может быть более сложной задачей, чем он мог бы смотреть на первый взгляд.
В поисках конкретного окна заголовка в tasklist /V
, а также тестирование CommandLine
недвижимости в wmic process where "name='cmd.exe'" get CommandLine
могут не при некоторых обстоятельствах можно вообразить.
1-й. Вы можете
- добавить
title ThisIsDistinguishingString
команды в начале всех других title
команд в mybatch.bat
и
- удалить из
mybatch.bat
и
- убедитесь, что
mybatch.bat
не вызова другой партии скрипт (ы), содержащего a title
команда?
Затем проверьте errorlevel
вернулся из find
command следующим образом:
:testMybatch
tasklist /V /FI "imagename eq cmd.exe" | find "ThisIsDistinguishingString" > nul
if errorlevel 1 (
rem echo mybatch.bat batch not found
) else (
echo mybatch.bat is running %date% %time%
timeout /T 10 /NOBREAK >NUL 2>&1
goto :testMybatch
)
второй.В противном случае, проверьте wmic
Windows Management Instrumentation command выход может помочь
wmic process where "name='cmd.exe'" get /value
Тогда вы могли бы обнаружить mybatch.bat
в своей продукции сократился до
wmic process where "name='cmd.exe'" get CommandLine, ProcessID
Обратите внимание, что wmic
может вернуть некоторые Win32_Process
class свойства, в частности CommandLine
, пустой если конкретный процесс запускался под другой учетной записью пользователя или повышался (запускался как администратор).
Повышенный wmic
возвращает все объекты недвижимости в полном объеме.
'tasklist/v' дает название окна. Это похоже на название окна - cmd не беспокоит изменение фактического названия. –