apozlevich |
27-09-2012 17:20 1995679 |
if exists почему-то true
Код:
@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 выполняется следующая строка. Происходит это ровно каждое второе выполнение, без отклонений. Нашел в том же коде еще один похожий баг.
|
apozlevich, Убери кавычки от параметров %1 и %2 в метке :wget. Ты и так передаешь параметры уже в кавычках.
И вообще не ясно зачем "wget" раньше "update"
|
apozlevich |
27-09-2012 20:55 1995777 |
Foreigner, добавил ~, так как имел несколько проблем с парсингом переменных и с тех пор предпочитаю брать в кавычки чуть более, чем все :)
|
apozlevich, и это — правильно.
|
apozlevich |
28-09-2012 20:43 1996322 |
Блин, а с сабжем-то что? Я уже на AutoIt почти переписал (правда там внезапно захотелось больше возможностей :) )
|
apozlevich, а что можно сказать? Вы приводите неполный код, не описываете пример. который можно воспроизвести и получить (возможно) ту же ошибку, что и у Вас.
|
apozlevich |
29-09-2012 08:32 1996481 |
Iska, ну вот у меня получается такой баг даже если просто вместо многоточия вставить call :wget %КакойНибудьСорц% %temp%\%КакойНибудьФайл%. Кстати, в основном коде обработка идет в цикле.
Появилась идея - сохранять не в %temp%. Доберусь до кода - опробую.
|
Время: 02:08.
© OSzone.net 2001-