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

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

Ответить
Настройки темы
CMD/BAT - if exists почему-то true

Аватара для apozlevich

Ветеран


Автор проектов


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


Конфигурация

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


Изменения
Автор: apozlevich
Дата: 27-09-2012
Код: Выделить весь код
@echo off

...

:wget
	Update\wget.exe -q -O "%~2" --ignore-case --no-cache --user-agent="%UserAgent%" "%~1" 2>nul
exit /b

:update
	echo Downloading %1...
	call :wget "%UpdateHost%/%1.upd" "%temp%\%1.upd"
	if exist "%temp%\%1.upd" (
		Update\7zr.exe e -y -- %temp%\%1.upd >nul
		if errorlevel 1 echo ERROR: Can't update %1: file locked by application?
	) else (
		echo ERROR: Can't download file. File missing on server or your have no connection.
	)
exit /b
Вот при выполнении :update если файла на сервере нет, почему-то все равно выполняется код if exists так, как будто файл есть. Файла нет, я проверял :)

UPD: Пока писал этот пост, вспомнил, что иногда после выполения exit выполняется следующая строка. Происходит это ровно каждое второе выполнение, без отклонений. Нашел в том же коде еще один похожий баг.

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!


Отправлено: 17:20, 27-09-2012

 

Ветеран


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

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


apozlevich, Убери кавычки от параметров %1 и %2 в метке :wget. Ты и так передаешь параметры уже в кавычках.
И вообще не ясно зачем "wget" раньше "update"

Последний раз редактировалось Foreigner, 27-09-2012 в 19:54.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:47, 27-09-2012 | #2



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

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


Аватара для apozlevich

Ветеран


Автор проектов


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

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


Foreigner, добавил ~, так как имел несколько проблем с парсингом переменных и с тех пор предпочитаю брать в кавычки чуть более, чем все

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:55, 27-09-2012 | #3


Ветеран


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

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


apozlevich, и это — правильно.

Отправлено: 17:30, 28-09-2012 | #4


Аватара для apozlevich

Ветеран


Автор проектов


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

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


Блин, а с сабжем-то что? Я уже на AutoIt почти переписал (правда там внезапно захотелось больше возможностей )

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!


Отправлено: 20:43, 28-09-2012 | #5


Ветеран


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

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


apozlevich, а что можно сказать? Вы приводите неполный код, не описываете пример. который можно воспроизвести и получить (возможно) ту же ошибку, что и у Вас.

Отправлено: 00:27, 29-09-2012 | #6


Аватара для apozlevich

Ветеран


Автор проектов


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

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


Iska, ну вот у меня получается такой баг даже если просто вместо многоточия вставить call :wget %КакойНибудьСорц% %temp%\%КакойНибудьФайл%. Кстати, в основном коде обработка идет в цикле.

Появилась идея - сохранять не в %temp%. Доберусь до кода - опробую.

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!


Отправлено: 08:32, 29-09-2012 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] появляется сообщение No any device exists Kotovski Непонятные проблемы с Железом 5 18-03-2012 23:11
True Time Tracker 1.6 OSZone Software Новости программного обеспечения 0 10-12-2010 12:30
[решено] "No any device exists!" Помогите убрать эту красную надпись. Kvantor Материнские платы и память 5 02-06-2010 09:15
Ошибка при загрузке контроллера домена: Duplicate name exists on the network ANR Microsoft Windows NT/2000/2003 0 12-10-2007 18:53
True Launch Bar arial Автоматическая установка приложений 16 25-04-2007 15:55




 
Переход