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

Показать сообщение отдельно

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


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

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


Батник пришлось доводить до ума... потерял лишние 2-3 дня - вываливался, гад.
Теперь для экономии времени и нервов, в начале сохраняет каталог в файлик (все в текущем каталоге, так что с поврежденного диска не запускать!), и если файлик имеется, то используется уже готовый (экономится примерно 15 минут времени запуска). Далее добавил срез данных (ну, всего-то 2 параметра - кол-во найденных ошибок и последний проверянный файл по сохраненному каталогу), как в старые добрые времена, когда машины висли каждые 2 часа
Так же улучший отображаемую на экран инфу - тек. каталог, штамп времени и счетчики файлов.
Проверяется уже 4е сутки без сбоев, на вторые сутки устал от воя кулера, запустил Эверест - оказалось, температура проца 81 градус (АМД), диска - 65 (ИБМ). Срочно принял меры, сейчас, температура не поднимается выше 75/56 (проц/диск). Текущая статистика - 3125 битых из 85280 проверянных (всего почти 313тыс). Большая часть по списку - спотыкания об кириллицу - меня особо не беспокоит, ибо не мои это фотки, у меня все имена исключительно латиницей. Через неделю жду окончательный вердикт.

Правленный батник:
Код: Выделить весь код
@Echo off
setlocal EnableExtensions

set IM="%ProgramFiles%\ImageMagick-6.7.0-Q8\identify.exe"
set WD="%1"
if not defined WD set WD="%CD%"
set Log="%CD%\%~n0.txt"
set Lst="%CD%\%~n0.lst"
set Stat="%CD%\%~n0.stat"
set N=0
set T=0
set CR=
if exist %Stat% for /f "usebackq tokens=1,2" %%N in (%Stat%) do set N=%%N & set T=%%O
if %T%==0 (set P= ) else set P=skip=%T%

pushd %WD%
if not exist %Lst% dir /a-d /b /s *.jpg>%Lst%
for /f "usebackq %P% tokens=1 delims=" %%F in (%Lst%) do call :Check "%%F"
popd
echo Corrupted or unknown formats: %N%/%T%
goto :End

:Check
echo %N% %T% %date% %time%>%Stat%
if not "%P%"=="%~dp1" set "P=%~dp1" & echo %date% %time%	%~dp1
set /P nul=%CR%%N%/%T%	<nul
set /a T+=1
%IM% -verbose -regard-warnings %1>nul 2>nul
set Err=%ErrorLevel%
if %Err%==1 echo %~1>>%Log% & echo %~1
if %Err%==1 set /a N+=1
exit /b

:End
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:47, 29-06-2011 | #7