|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] не срабатывает IF |
|
|
CMD/BAT - [решено] не срабатывает IF
|
Новый участник Сообщения: 6 |
я написал батник который при наличии процесса убивает его и дальше работает.
просто через /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 |
|
Отправлено: 13:03, 07-05-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать roccat_34, где находится client.exe? Здесь:
Цитата roccat_34:
Цитата roccat_34:
Чего Вы пытаетесь достичь, дважды исполняя replace без указания аргументов? Для начала опишите словами, какую задачу Вы пытаетесь решить. |
||
Отправлено: 14:34, 07-05-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать я пытаюсь достичь чтобы через if taskill срабатывал. то есть в идеале она проверяет наличие запущенного клиента и если есть то убивает его и потом заменяет нужные файлы. в команде старт всё нормально там полный путь указан start C:\\Folder\client.exe
аргументы в replace тоже в порядке там просто путь с шары на локальную машину просто описан. батник берет два файла с папки в шаре и заменяет на машине просто хочу понять почему просто taskill срабатывает а с ифом нет |
Отправлено: 14:45, 07-05-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать roccat_34, покажите полный и точный код Вашего пакетного файла.
|
Отправлено: 16:14, 07-05-2018 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать @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 |
|
Отправлено: 16:22, 07-05-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать roccat_34, что за «exesits»? Вы можете просто скопировать и вставить код? Вопросов стало ещё больше. Не знаю, есть ли смысл их задавать.
@echo off setlocal enableextensions enabledelayedexpansion set sPath=c:\AstCommon set sFile=client.exe if exist "%sPath%\%sFile%" ( >nul 2>&1 taskkill.exe /f /im "%sFile%" replace.exe "\\192.168.0.1\Archives\1\folder\%sFile%" "%sPath%" replace.exe "\\192.168.0.1\Archives\1\folder\%sFile:~0,-4%.ini" "%sPath%" start "" "%sPath%\%sFile%" ) else ( echo Can't find client [%sFile%] in folder [%sPath%]. exit /b 1 ) endlocal exit /b 0 |
Отправлено: 16:49, 07-05-2018 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать roccat_34,
вы не нервничайте и не спешите откройте ваш bat, выделите все, скопируйте, потом здесь на сайте в окне найдите теги # , нажмите и вставьте скопированное между ними если примерно так и сделали, то у вас 3 ошибки в коде 1. exesits , надо exist 2. /client.exe , надо \client.exe 3. ELSE(echo test) , надо ELSE (echo test) |
Отправлено: 16:56, 07-05-2018 | #7 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать @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-ом |
Отправлено: 17:36, 07-05-2018 | #8 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата roccat_34:
Поскольку дальше следует, что он должен быть не в корне диска, а в каталоге C:\AstCommon\ — а ведь если файла в корне активного диска нет, то первая строка никогда не будет обращаться к taskkill, a всегда будет завершаться эхом test. 2. Наличие файла не означает, что этот файл запущен и что его процесс надо убивать. Т.е. надо проверять не наличие файла, а активность его процесса. 3. Вам исполнять строки начиная со второй надо при любом исходе проверки по первой строке? Сейчас у вас именно так. |
|
------- Отправлено: 22:04, 07-05-2018 | #9 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата mwz:
|
||
Отправлено: 22:08, 07-05-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Не срабатывает ControlClick | sNc-DAntES | AutoIt | 6 | 01-07-2016 12:10 | |
VBS/WSH/JS - AppActivate не срабатывает | Solarity | Скриптовые языки администрирования Windows | 3 | 27-05-2010 12:56 | |
не срабатывает GPO | 1dimas | Microsoft Windows NT/2000/2003 | 3 | 23-04-2009 10:47 | |
Не срабатывает [GuiRunOnce] | x-net | Автоматическая установка Windows 2000/XP/2003 | 18 | 11-01-2009 10:12 | |
Не срабатывает .htaccess | Bugs | Защита компьютерных систем | 5 | 30-06-2003 06:10 |
|