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

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

Ответить
Настройки темы
CMD/BAT - [решено] Сортировка файлов по результату Errorlevel

Новый участник


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

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


Добрый вечер!
Возникла острая потребность в скрипте, который будет создавать папку с текущей датой, перемещать туда архивы с файлами с регионального ресурса, распаковывать и копировать на локальные. Есть вероятность того, что в архиве будут "битые" файлы, нахождение которых в базе недопустимо, для этого бьюсь с той частью скрипта, которая, по моим скромным задумкам, должна тестировать архивы посредством архиватора и далее раскладывать их на , условно, "хорошие" и "плохие", пытаюсь для этого использовать переменную 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

********************************************************************

Спасибо!!

Отправлено: 01:58, 21-03-2015

 

Аватара для gora

Ушёл из жизни


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

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


Цитата Herheinz:
тестировать архивы посредством архиватора »
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
set InDir=s:\test\d\
set log=s:\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 "%%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
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:54, 21-03-2015 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
@echo off

set "InDir=d:\test\d\"
set "log=d:\test\log.txt"

>"%log%" echo "Start"
pushd "%InDir%"
for /f "delims=" %%i in ('dir/a-d/b') do (
 "C:\Program Files\7-Zip\7z.exe" t -r "%%i"|>nul find/i "Everything is Ok"&& call:# "%%i" ok|| call:# "%%i" bad
)
popd

pause& exit/b

:#
>>"%log%" xcopy/y "%~1" "..\c\%2\"& goto:eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 21-03-2015 | #3


Новый участник


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

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


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 заведомо поврежден и не может быть в порядке((

Отправлено: 14:44, 21-03-2015 | #4


Аватара для gora

Ушёл из жизни


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

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


Цитата Herheinz:
архив test.LZH заведомо поврежден »
Выложите его на обменник и приведите ссылку здесь.

Отправлено: 14:49, 21-03-2015 | #5


Новый участник


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

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


2 gora:
http://www.fayloobmennik.net/4716849

0000

Отправлено: 10:02, 22-03-2015 | #6


Аватара для gora

Ушёл из жизни


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

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


Herheinz, результат:
Код: Выделить весь код
"Start" 
Archive is OK	"s:\test\d\35234t6.7z" 
Archive is OK	"s:\test\d\d_sl2_150321_12-12.7z" 
Archive is OK	"s:\test\d\pr.7z" 
Archive is BAD	"s:\test\d\Temp 1.7z" 
Archive is OK	"s:\test\d\Temp11.7z" 
Archive is BAD	"s:\test\d\test.lzh" 
Archive is OK	"s:\test\d\Test_7zip.7z"
ps
7-Zip Ver 9.38 beta

Последний раз редактировалось gora, 22-03-2015 в 10:24.


Отправлено: 10:10, 22-03-2015 | #7


Новый участник


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

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


Изображения
Тип файла: jpg cmd.JPG
(128.1 Kb, 8 просмотров)

gora, поменял версию, теперь ErrorLevel всегда выдает 7, что приводит к тому, что ВСЕ архивы становятся плохими
(во вложении скрин с ходом выполнения команды в cmd)

Отправлено: 15:00, 22-03-2015 | #8


Аватара для gora

Ушёл из жизни


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

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


Цитата Herheinz:
поменял версию »
Не информативно! На какую?
Цитата Herheinz:
теперь ErrorLevel всегда выдает 7, что приводит к тому, что ВСЕ архивы становятся плохими »
Логично, ибо:
Цитата справка:
7 - Ошибка командной строки
Что-то Вы там поменяли в скрипте, но я этого не вижу.
Цитата:
во вложении скрин с ходом выполнения
Не вижу вложения.

Отправлено: 15:07, 22-03-2015 | #9


Новый участник


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

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


gora,

Цитата gora:
Не информативно! На какую? »
на рекомендованную) 9,38 Beta

Цитата gora:
Не вижу вложения. »
вот ссылка на файлообменник

http://www.fayloobmennik.net/4717292

Цитата gora:
Что-то Вы там поменяли в скрипте, но я этого не вижу. »
вот тот вид скрипта, в котором я его запускаю

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

Отправлено: 15:12, 22-03-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Автоматическая сортировка файлов по папкам kako12 Microsoft Windows 8 и 8.1 8 08-06-2013 21:07
CMD/BAT - сортировка файлов по папкам по дате в названии insearches Скриптовые языки администрирования Windows 1 03-02-2013 17:03
PowerShell - Сортировка файлов по подстроке kostich Скриптовые языки администрирования Windows 12 15-12-2012 13:27
CMD/BAT - Сортировка файлов по расширению cyber_ua Скриптовые языки администрирования Windows 9 07-10-2012 23:16
Медиа - [решено] Сортировка файлов по номеру, имени и т.д. medvedkovo Microsoft Windows 7 2 19-01-2011 01:34




 
Переход