DOS
Wie scanne ich Archive auf einen Defekt ?
Die mit Abstand einfachste Methode ist ein Batchscript. Einfach den Code in eine Datei „scanzip.bat“ kopieren, die Pfade zu den Exen anpassen und fertig.
@ECHO OFF REM Create Current Date and Time SET MYDATE=%DATE:~-10% SET MYTIME=%TIME:~0,8% SET MYTIME=%MYTIME::=-% REM Init LogFile and Tempfiles SET MYLOG=scanlog_%MYDATE%_%MYTIME%.txt SET USELESS="%TEMP%\USELESS.$$$" ECHO. > %MYLOG% REM Path to Commandlineversion REM download 7za from http://downloads.sourceforge.net/sevenzip/7za442.zip SET MYZIP="c:\batch\7za.exe" SET MYRAR="c:\batch\rar.exe" REM Check for ZipExe IF NOT EXIST %MYZIP% GOTO :NOEXE %MYZIP% IF NOT EXIST %MYRAR% GOTO :NOEXE %MYRAR% REM ask User for basepath or use current ECHO enter directory to scan [return for %CD%] SET MYROOT= SET /P MYROOT= IF (%MYROOT%) EQU () SET MYROOT=%CD% SET MYROOT=%MYROOT:"=% REM Ask for Scanmode (Fast=Open and List Contents/Deep=CRC) ECHO Scanmode (F)ast or (D)eep [Deep] SET /P SCANMODE= IF /I (%SCANMODE%) EQU (f) (SET SCANMODE=Fast) ELSE (SET SCANMODE=Deep) REM Set ScanSwitches IF /I (%SCANMODE%) EQU (Deep) ( SET SWZIP=t SET SWRAR=t ) ELSE ( SET SWZIP=l SET SWRAR=l ) REM Add Command-Switch SET MYZIP=%MYZIP% %SWZIP% SET MYRAR=%MYRAR% %SWRAR% REM Here we go CLS CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "Archive-Check 0.4 " CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "RootDir : %MYROOT%" CALL :ADDLOG "Mode : %SCANMODE%" CALL :ADDLOG "Logfile : %MYLOG%" CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "RAREXE : %MYRAR%" CALL :ADDLOG "ZIPEXE : %MYZIP%" CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "Started : %TIME% / %DATE%" SET /A FILECOUNT=0 SET /A OKCOUNT=0 REM SCAN ALL ARCHIVES FILES FOR /R "%MYROOT%" %%f IN (*.rar) DO CALL :SCANRAR "%%f" FOR /R "%MYROOT%" %%f IN (*.zip) DO CALL :SCANZIP "%%f" FOR /R "%MYROOT%" %%f IN (*.7z) DO CALL :SCANZIP "%%f" SET /A FAILCOUNT=%FILECOUNT% - %OKCOUNT% CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "Files :%FILECOUNT% CALL :ADDLOG "OK :%OKCOUNT% CALL :ADDLOG "Corrupt :%FAILCOUNT% CALL :ADDLOG "--------------------------------------------------------------" CALL :ADDLOG "Stopped : %TIME% / %DATE%" IF EXIST %USELESS% DEL %USELESS% GOTO :EOF REM #################################################################### REM # Scan Archives REM #################################################################### :SCANZIP SET FILE=%1 SET FILE=%FILE:"=% CALL :INCREASE FILECOUNT @CALL %MYZIP% "%FILE%" > %USELESS% SET /A ERROR=%ERRORLEVEL% REM Log and Remove IF %ERROR% EQU 0 CALL :INCREASE OKCOUNT IF %ERROR% EQU 0 CALL :ADDLOG "%FILE% OK" IF %ERROR% NEQ 0 CALL :REMOVEIT "%FILE%" GOTO :EOF REM #################################################################### :SCANRAR SET FILE=%1 SET FILE=%FILE:"=% CALL :INCREASE FILECOUNT @CALL %MYRAR% "%FILE%" > %USELESS% SET /A ERROR=%ERRORLEVEL% REM Log and Remove IF %ERROR% EQU 0 CALL :INCREASE OKCOUNT IF %ERROR% EQU 0 CALL :ADDLOG "%FILE% OK" IF %ERROR% NEQ 0 CALL :REMOVEIT "%FILE%" GOTO :EOF REM #################################################################### REM #Subfunktions REM #################################################################### :REMOVEIT SET FILE=%1 SET FILE=%FILE:"=% REM Uncomment DEL to remove corrupt files CALL :ADDLOG "%FILE% CORRUPT" REM DEL %FILE% GOTO :EOF :INCREASE SET /A %1=%1 + 1 GOTO :EOF :NOEXE ECHO %1 not found PAUSE GOTO :EOF :ADDLOG SET LOGOUT=%1 SET LOGOUT=%LOGOUT:"=% ECHO %LOGOUT% ECHO %LOGOUT% >> %MYLOG% GOTO :EOF