Имя: Пароль:
IT
Админ
Знатокам Bat файлов
0 Гёдза
 
10.06.15
16:44
Задача проверить и исправить архивы
есть скрипт
FOR /R %dira% %%A IN (*.rar) DO (

    :: test
    %_rar% T %%~nA.r* -p%pasv%
    :: if test failed
    if %ERRORLEVEL% GEQ 1 (
        :: repair
        %_rar% R %%~nA.r* %dirfixed% -p%pasv%
        :: del corrupted files
        del /q %%~nA.r*
    )
)

Проблема в том что %ERRORLEVEL% вычисляется ДО цикла, а нужно во время для каждого файла
1 Fish
 
10.06.15
16:53
В одном батнике проверяешь, а в другой передаёшь %ERRORLEVEL%
2 Гёдза
 
10.06.15
16:55
Нашел решение
setlocal EnableDelayedExpansion
to the start of your script, then use !errorlevel! instead of %errorlevel%

http://stackoverflow.com/questions/3942265/errorlevel-in-a-for-loop-batch-windows
3 DES
 
10.06.15
16:56
if test failed  - зачем?
4 Гёдза
 
10.06.15
17:04
(3) это комментарий
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой