![]() |
Сортировка файлов по результату Errorlevel
Добрый вечер!
Возникла острая потребность в скрипте, который будет создавать папку с текущей датой, перемещать туда архивы с файлами с регионального ресурса, распаковывать и копировать на локальные. Есть вероятность того, что в архиве будут "битые" файлы, нахождение которых в базе недопустимо, для этого бьюсь с той частью скрипта, которая, по моим скромным задумкам, должна тестировать архивы посредством архиватора и далее раскладывать их на , условно, "хорошие" и "плохие", пытаюсь для этого использовать переменную Errorlevel, разумеется. безуспешно ******************************************************************** set InDir=d:\test\d\ set log=d:\test\log.txt echo "Start" >>%log% for /f %i in ('dir %InDir% /b') do ("C:\Program Files\7-Zip\7z.exe" t -r %InDir%%i IF %ERRORLEVEL% neq 0 goto BAD else goto OK) :OK xcopy d:\test\d\ d:\test\c\ok >>%log% :BAD xcopy d:\test\d\ d:\test\c\Bad >>%log% pause ******************************************************************** Спасибо!! |
Цитата:
Код:
@Echo Off |
Код:
@echo off |
2 gora: спасибо, но что то тут не так.
вот результат ЛОГа: ""Start" Archive is OK "d:\test\d\test.LZH" Archive is OK "d:\test\d\test.rar" Archive is OK "d:\test\d\test.zip" Archive is OK" Вся беда в том что архив test.LZH заведомо поврежден и не может быть в порядке(( |
Цитата:
|
|
Herheinz, результат:
Код:
"Start" 7-Zip Ver 9.38 beta |
Вложений: 2
gora, поменял версию, теперь ErrorLevel всегда выдает 7, что приводит к тому, что ВСЕ архивы становятся плохими
(во вложении скрин с ходом выполнения команды в cmd) |
Цитата:
Цитата:
Цитата:
Цитата:
|
gora,
Цитата:
Цитата:
http://www.fayloobmennik.net/4717292 Цитата:
rem @Echo Off SetLocal EnableDelayedExpansion set InDir=d:\test\d\ set log=d:\test\log.txt echo "Start" >>%log% For /F "tokens=* delims=" %%i In ('dir /S /A:-D /B "%InDir%" 2^>Nul') Do ( "C:\Program Files\7-Zip\7z.exe" t -r -ba %InDir%\"%%i">Nul Echo "%%i" !ERRORLEVEL! IF !ERRORLEVEL! neq 0 (Call :BAD "%%i") else (Call :OK "%%i") ) Pause :OK Echo Archive is OK %1 >>%log% rem xcopy s:\test\d\ s:\test\c\ok >>%log% GoTo :EOF :BAD Echo Archive is BAD %1 >>%log% rem xcopy s:\test\d\ s:\test\c\Bad >>%log% GoTo :EOF |
Herheinz, А зачем %errorlevel% ?
Код:
7z t test.lzh 1>nul && echo archieve: OK || echo archieve: BAD |
PS
Не нужно ни чего дописывать перед переменной в этой строке Код:
"E:\Program Files\7-Zip\7z.exe" t -r -ba %InDir%\"%%i">Nul Начните с моего скрипта без модификаций. Не меняйте ни чего кроме своих путей в первых строках и все. |
gora, спасибо огромное, разобрался, все работает :clapping:
З.Ы. буду благодарен если направите мои мысли в правильном направлении в вопросе дальнейшего копирования Спасибо еще раз! |
Время: 12:09. |
Время: 12:09.
© OSzone.net 2001-