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

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

Ответить
Настройки темы
CMD/BAT - [решено] не срабатывает IF

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


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

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


Изменения
Автор: roccat_34
Дата: 07-05-2018
я написал батник который при наличии процесса убивает его и дальше работает.
просто через /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
Благодарности: 8087

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


roccat_34, где находится client.exe? Здесь:
Цитата roccat_34:
If EXIST \client.exe »
Вы проверяете наличие client.exe в корневом каталоге текущего диска. Здесь:
Цитата roccat_34:
start client.exe »
Вы пытаетесь запустить client.exe из текущего каталога, из PATH или из AppPaths.

Чего Вы пытаетесь достичь, дважды исполняя replace без указания аргументов?

Для начала опишите словами, какую задачу Вы пытаетесь решить.

Отправлено: 14:34, 07-05-2018 | #2



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

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


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


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

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


я пытаюсь достичь чтобы через if taskill срабатывал. то есть в идеале она проверяет наличие запущенного клиента и если есть то убивает его и потом заменяет нужные файлы. в команде старт всё нормально там полный путь указан start C:\\Folder\client.exe
аргументы в replace тоже в порядке там просто путь с шары на локальную машину просто описан. батник берет два файла с папки в шаре и заменяет на машине
просто хочу понять почему просто taskill срабатывает а с ифом нет

Отправлено: 14:45, 07-05-2018 | #3


Ветеран


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

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


roccat_34, покажите полный и точный код Вашего пакетного файла.

Отправлено: 16:14, 07-05-2018 | #4


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


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

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить 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
Благодарности: 564

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить 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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата roccat_34:
if EXIST \client.exe (taskkill /f /im client.exe) ELSE (echo test »
1. Как уже сказали, вы проверяете наличие файла client.exe в корне текущего (то есть в общем случае — неопределённого) диска. Файл этот у вас там есть?

Поскольку дальше следует, что он должен быть не в корне диска, а в каталоге C:\AstCommon\ — а ведь если файла в корне активного диска нет, то первая строка никогда не будет обращаться к taskkill, a всегда будет завершаться эхом test.

2. Наличие файла не означает, что этот файл запущен и что его процесс надо убивать. Т.е. надо проверять не наличие файла, а активность его процесса.

3. Вам исполнять строки начиная со второй надо при любом исходе проверки по первой строке? Сейчас у вас именно так.

-------
Mikhail Zhilin


Отправлено: 22:04, 07-05-2018 | #9


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


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

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


Цитата mwz:
Цитата roccat_34:
if EXIST \client.exe (taskkill /f /im client.exe) ELSE (echo test »
1. Как уже сказали, вы проверяете наличие файла client.exe в корне текущего (то есть в общем случае — неопределённого) диска. Файл этот у вас там есть?

Поскольку дальше следует, что он должен быть не в корне диска, а в каталоге C:\AstCommon\ — а ведь если файла в корне активного диска нет, то первая строка никогда не будет обращаться к taskkill, a всегда будет завершаться эхом test.

2. Наличие файла не означает, что этот файл запущен и что его процесс надо убивать. Т.е. надо проверять не наличие файла, а активность его процесса.

3. Вам исполнять строки начиная со второй надо при любом исходе проверки по первой строке? Сейчас у вас именно так.
Хорошо, как тогда проверять наличие процесса? мне нужно чтобы батник именно либо убивал процесс и потом заменял либо выводил что процесс не запущен и заменял файлы

Отправлено: 22:08, 07-05-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Не срабатывает 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




 
Переход