Показать полную графическую версию : [решено] Условие на кол-во процессов
У меня запускается файл test.exe
Мне в батнике нужно прописать условие, что если запускается еще один такой файл test.exe, когда первый еще выполняется (там длительный процесс копирования) - то второй должен закрываться.
Что-то типа:
IF tasklist^|find /i "test.exe" GTR 1 goto:eof
Как правильно написать это условие?
( tasklist | find "test.exe" >nul ) || test.exe
SendMessage
17-01-2011, 19:55
Мне в батнике нужно прописать условие, что если запускается еще один такой файл test.exe, когда первый еще выполняется (там длительный процесс копирования) - то второй должен закрываться. »
Запускается через батник? Тогда просто не давай ему запуститься.
tasklist | find /i "test.exe" || start "" "test.exe"
Или я не так понял?
Упс, припоздал. :)
Немного не правильно наверное объяснил :( сорри ...
Есть батник с функциями копирования - он скомпилирован в exe файл (test.exe) с помощью bat to exe converter. Работает скрытно от пользователей (только окно cmd с текстом "Подождите ...") и чтобы они не могли там настройки поменять. Он отрабатывает копирование какое-то время, в процессах висит его имя (test.exe). Пользователям иногда кажется что ничего не происходит и пытаются запустить его снова. Т.е. в одно и тоже время начинает отрабатывать один и тот же файл, а это допустить никать нельзя.
Нужно встроить проверку, что если такой процесс уже есть (test.exe) goto :eof.
если такой процесс уже есть (test.exe) goto :eof »
tasklist | find /i "test.exe" && goto:eof
amel27, так он ни разу не выполнится, ибо найдёт сам себя :). Наверное, где-то так:
@echo off
setlocal
set /a iCount = 0
for /f "usebackq" %%i in (`tasklist.exe /fi "imagename eq test.exe" /nh`) do set /a iCount += 1
if %iCount% geq 2 (echo Already running & goto :eof)
rem Реальные команды
ping.exe -n 10 -w 1000 localhost
endlocal
exit /b 0
Iska, точно :) тогда можно так:
tasklist | find /i /c "test.exe" | find /v "1" >nul&& goto:eof
Ну, вот :(. Я тоже вспомнил про «find.exe /v», но так и не сообразил, как можно избавиться от пустой строки в выводе tasklist :lol:. Спасибо.
Не работает данная команда:
tasklist | find /i /c "test.exe" | find /v "1" >nul&& goto:eof
процесс видит сам себя и закрывается.
процесс видит сам себя и закрывается »
не так - если он видит только себя, то продолжает выполнение (переходит на следующую команду), если видит кого-то ещё с таким же именем процесса, то закрывается (переходит в конец скрипта)
не так - если он видит только себя, то продолжает выполнение (переходит на следующую команду), если видит кого-то ещё с таким же именем процесса, то закрывается (переходит в конец скрипта) »
Да, все работает. Огромное спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.