Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Условие на кол-во процессов

Ответить
Настройки темы
CMD/BAT - [решено] Условие на кол-во процессов

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня запускается файл test.exe
Мне в батнике нужно прописать условие, что если запускается еще один такой файл test.exe, когда первый еще выполняется (там длительный процесс копирования) - то второй должен закрываться.

Что-то типа:

IF tasklist^|find /i "test.exe" GTR 1 goto:eof


Как правильно написать это условие?

Отправлено: 18:03, 17-01-2011

 

Пользователь


Сообщения: 96
Благодарности: 12

Профиль | Отправить PM | Цитировать


( tasklist | find "test.exe" >nul ) || test.exe

Отправлено: 19:51, 17-01-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Pavlon:
Мне в батнике нужно прописать условие, что если запускается еще один такой файл test.exe, когда первый еще выполняется (там длительный процесс копирования) - то второй должен закрываться. »
Запускается через батник? Тогда просто не давай ему запуститься.
Код: Выделить весь код
tasklist | find /i "test.exe" || start "" "test.exe"
Или я не так понял?

Упс, припоздал.

Отправлено: 19:55, 17-01-2011 | #3


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Немного не правильно наверное объяснил сорри ...

Есть батник с функциями копирования - он скомпилирован в exe файл (test.exe) с помощью bat to exe converter. Работает скрытно от пользователей (только окно cmd с текстом "Подождите ...") и чтобы они не могли там настройки поменять. Он отрабатывает копирование какое-то время, в процессах висит его имя (test.exe). Пользователям иногда кажется что ничего не происходит и пытаются запустить его снова. Т.е. в одно и тоже время начинает отрабатывать один и тот же файл, а это допустить никать нельзя.

Нужно встроить проверку, что если такой процесс уже есть (test.exe) goto :eof.

Последний раз редактировалось Pavlon, 17-01-2011 в 22:01.


Отправлено: 21:55, 17-01-2011 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Pavlon:
если такой процесс уже есть (test.exe) goto :eof »
Код: Выделить весь код
tasklist | find /i "test.exe" && goto:eof

Отправлено: 04:51, 18-01-2011 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:21, 18-01-2011 | #6


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Iska, точно тогда можно так:
Код: Выделить весь код
tasklist | find /i /c "test.exe" | find /v "1" >nul&& goto:eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:36, 18-01-2011 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ну, вот . Я тоже вспомнил про «find.exe /v», но так и не сообразил, как можно избавиться от пустой строки в выводе tasklist . Спасибо.

Отправлено: 08:07, 18-01-2011 | #8


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не работает данная команда:

tasklist | find /i /c "test.exe" | find /v "1" >nul&& goto:eof

процесс видит сам себя и закрывается.

Отправлено: 12:31, 18-01-2011 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Pavlon:
процесс видит сам себя и закрывается »
не так - если он видит только себя, то продолжает выполнение (переходит на следующую команду), если видит кого-то ещё с таким же именем процесса, то закрывается (переходит в конец скрипта)

Отправлено: 12:37, 18-01-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Условие на кол-во процессов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Условие на появление окна! depodimon AutoIt 1 18-02-2010 15:27
C/C++ - Условие выбора ShadowMas Программирование и базы данных 4 22-02-2009 21:42
[решено] IF EXIST <условие> goto Pozia AutoIt 1 18-01-2009 19:20
[решено] Непонятка с кол-вом благодарностей, и кол-вом полезных сообщений Oleg_SK О сайте и форуме 1 23-12-2007 01:58
Условие кодировки. Редактирование файла из cmd. Mss Автоматическая установка Windows 2000/XP/2003 4 19-05-2005 23:25




 
Переход