PDA

Показать полную графическую версию : if exists почему-то true


apozlevich
27-09-2012, 17:20
@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 выполняется следующая строка. Происходит это ровно каждое второе выполнение, без отклонений. Нашел в том же коде еще один похожий баг.

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

apozlevich
27-09-2012, 20:55
Foreigner, добавил ~, так как имел несколько проблем с парсингом переменных и с тех пор предпочитаю брать в кавычки чуть более, чем все :)

Iska
28-09-2012, 17:30
apozlevich, и это — правильно.

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

Iska
29-09-2012, 00:27
apozlevich, а что можно сказать? Вы приводите неполный код, не описываете пример. который можно воспроизвести и получить (возможно) ту же ошибку, что и у Вас.

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

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




© OSzone.net 2001-2012