![]() |
не срабатывает IF
я написал батник который при наличии процесса убивает его и дальше работает.
просто через /taskill всё убивается спокойно, но когда делаю его через If то процесс не убивается и соответственно не до конца исполняется батник. за день до этого всё работало спокойно и убивалось Сам код: @echo off echo updater running If EXIST \client.exe (taskkill /f /im client.exe) ELSE (echo vse norm) replace replace start client.exe |
roccat_34, где находится client.exe? Здесь:
Цитата:
Цитата:
Чего Вы пытаетесь достичь, дважды исполняя replace без указания аргументов? Для начала опишите словами, какую задачу Вы пытаетесь решить. |
я пытаюсь достичь чтобы через if taskill срабатывал. то есть в идеале она проверяет наличие запущенного клиента и если есть то убивает его и потом заменяет нужные файлы. в команде старт всё нормально там полный путь указан start C:\\Folder\client.exe
аргументы в replace тоже в порядке там просто путь с шары на локальную машину просто описан. батник берет два файла с папки в шаре и заменяет на машине просто хочу понять почему просто taskill срабатывает а с ифом нет |
roccat_34, покажите полный и точный код Вашего пакетного файла.
|
@echo off
if exesits /client.exe (taskkill /f /im client.exe) ELSE(echo test) replace \\192.168.0.1\Archives\1\folder\client.exe C:\AstCommon replace \\192.168.0.1\Archives\1\folder\client.ini C:\AstCommon start C:\folder\client.exe |
roccat_34, что за «exesits»? Вы можете просто скопировать и вставить код? Вопросов стало ещё больше. Не знаю, есть ли смысл их задавать.
Код:
@echo off |
roccat_34,
вы не нервничайте и не спешите откройте ваш bat, выделите все, скопируйте, потом здесь на сайте в окне найдите теги # , нажмите и вставьте скопированное между ними если примерно так и сделали, то у вас 3 ошибки в коде 1. exesits , надо exist 2. /client.exe , надо \client.exe 3. ELSE(echo test) , надо ELSE (echo test) |
@echo off
if EXIST \client.exe (taskkill /f /im client.exe) ELSE (echo test) replace \\192.168.0.1\Archives\1\AstCommon\client.exe C:\AstCommon replace \\192.168.0.1\Archives\1\AstCommon\client.ini C:\AstCommon start C:\AstCommon\client.exe поправил всё равно не срабатывает taskkill с if-ом |
Цитата:
Поскольку дальше следует, что он должен быть не в корне диска, а в каталоге C:\AstCommon\ — а ведь если файла в корне активного диска нет, то первая строка никогда не будет обращаться к taskkill, a всегда будет завершаться эхом test. 2. Наличие файла не означает, что этот файл запущен и что его процесс надо убивать. Т.е. надо проверять не наличие файла, а активность его процесса. 3. Вам исполнять строки начиная со второй надо при любом исходе проверки по первой строке? Сейчас у вас именно так. |
Цитата:
|
roccat_34, посмотрите хотя бы http://forum.oszone.net/post-1122855.html и http://www.cyberforum.ru/cmd-bat/thread1914738.html (найдено Яндексом за 30 секунд запросом "как проверить из командного файла наличие процесса в памяти").
|
|
Цитата:
|
Время: 13:15. |
Время: 13:15.
© OSzone.net 2001-