Имя пользователя:
Пароль:
 | Правила  

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

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

Ветеран


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

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


Приветствую!

Необходимо через утилиту 7za.exe проверить все файлы расширения docx в каталоге и подкаталогах на целостность. Из получившегося списка необходимо выделить список (имена) файлов, у которых возникли ошибки или предупреждения.

Запуск утилиты произвожу таким образом:
Код: Выделить весь код
7za t c:\DirToCheck\*.docx -bse0
Получаю такой результат:
Цитата:
7-Zip (a) [64] 15.14 : Copyright (c) 1999-2015 Igor Pavlov : 2015-12-31

Scanning the drive for archives:
3 files, 3045799 bytes (2975 KiB)

Testing archive: c:\DirToCheck\bad.docx
--
Path = c:\DirToCheck\bad.docx
Type = zip
Physical Size = 145588


Sub items Errors: 7

Testing archive: c:\DirToCheck\good.docx
--
Path = c:\DirToCheck\good.docx
Type = zip
Physical Size = 17139

Everything is Ok

Testing archive: c:\DirToCheck\warning.docx

WARNINGS:
There are data after the end of archive

--
Path = c:\DirToCheck\warning.docx
Type = zip
WARNINGS:
There are data after the end of archive
Physical Size = 20567
Tail Size = 2862505

Everything is Ok

Archives: 3
OK archives: 1
Archives with Errors: 1
Archives with Warnings: 1

Warnings: 1

Sub items Errors: 7
Из этого всего мне нужно получить лишь список следующих файлов:
Цитата:
c:\DirToCheck\bad.docx
c:\DirToCheck\warning.docx
, потому как у этих файлов есть ошибки (Error) или предупреждения (Warning).

Теперь пытаюсь сделать это в скрипте:
Код: Выделить весь код
for /f "delims=" %a in ('dir c:\DirToCheck\*.doc /b /s /a-d') do 7za t "%a" -bse0 | FIND "Warn"
Здесь мне необходимо добавить как-то в условие FIND "Err", а также в случае нахождения одного из этих двух слов, перенаправлять имя файла в log.txt. Помогите, пожалуйста, это организовать.

Спасибо!

Отправлено: 21:43, 20-03-2016

 

Ветеран


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

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


Почему не просто воспользоваться кодом возврата 7-Zip? Наподобие (пишу по памяти, не проверялось):
Код: Выделить весь код
… do >nul 2>&1 7za.exe t "%a" -bse0 || echo %a
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:07, 20-03-2016 | #2



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

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


Ветеран


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

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


Или так:

Код: Выделить весь код
for /f "delims=" %%a in ('dir "C:\DirToCheck\*.doc" /b /s /a-d') do (
 7za t "%%a" -bse0 | >nul find /i "Everything is Ok"|| >>"log.txt" echo %%a
)
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:45, 20-03-2016 | #3


Ветеран


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

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


Iska, результатом такого скрипта будет следующее:
Код: Выделить весь код
c:\7z1514-extra\x64>7za t "c:\DirToCheck\bad.docx" -bse0   1>nul 2>&1  || echo c:\DirToCheck\bad.docx
c:\DirToCheck\bad.docx

c:\7z1514-extra\x64>7za t "c:\DirToCheck\good.docx" -bse0   1>nul 2>&1  || echo c:\DirToCheck\good.docx

c:\7z1514-extra\x64>7za t "c:\DirToCheck\warning.docx" -bse0   1>nul 2>&1  || echo c:\DirToCheck\warning.docx
Т.е имя файла выдается в случае ошибки, а ещё нужно учитывать предупреждение...

Georgio, фраза "Everything is Ok" также фигурирует в случае, если файл имеет предупреждение, поэтому от неё отталкиваться нельзя...

Отправлено: 22:53, 20-03-2016 | #4


Ветеран


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

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


Тогда как-то так:

Код: Выделить весь код
for /f "delims=" %%a in ('dir "C:\DirToCheck\*.doc" /b /s /a-d') do (
 7za t "%%a" -bse0 | >nul findstr /i "error warning"&& >>"log.txt" echo %%a
)
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:18, 20-03-2016 | #5


Ветеран


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

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


Georgio, большущее спасибо!

Отправлено: 23:21, 20-03-2016 | #6


Ветеран


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

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


Цитата The_Immortal:
а ещё нужно учитывать предупреждение... »
Значит, Ваши «Warning» имеют какое-то другое происхождение, поскольку «Exit Codes from 7-Zip» трактует однозначно:
Цитата:
7-Zip returns the following exit codes:

Code Meaning
0 No error
1 Warning (Non fatal error(s)). For example, one or more files were locked by some other application, so they were not compressed.
2 Fatal error
7 Command line error
8 Not enough memory for operation
255 User stopped the process
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:49, 20-03-2016 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - sfc /scannow - проверка целостности системных файлов - .: [все вопросы] :. Petya V4sechkin Microsoft Windows 2000/XP 313 27-11-2018 10:42
Система - [решено] проверка целостности большого количества файлов daneeall Программное обеспечение Windows 7 08-02-2013 16:25
Восстановление - Подскажите, пожалуйста, какой-нибудь Live CD для проверки целостности файлов RasKolbas Программное обеспечение Windows 5 12-07-2010 14:14
Разное - Копирование в Винде - имеется ли проверка целостности скопированных файлов? Alien 4ever Microsoft Windows 2000/XP 4 22-12-2007 20:06
Как отключить завершающую проверку целостности файлов Vovanchik Автоматическая установка Windows 2000/XP/2003 1 18-09-2005 01:39




 
Переход