Batch-Konvertierung von .rar in .7z - Pfadvariable?

601
seanpf

Ich fand jemanden, der ein sehr schönes Batch-Skript geschrieben hatte, um .zip in .7z zu konvertieren, und ich versuche, es .rar in 7z umzuwandeln. Ich bin in der Lage, das Skript zum Laufen zu bringen, aber ich kann nicht herausfinden, wo die Variable "PATH" festgelegt ist, wie erklärt: "Das 7-Zip-Befehlszeilentool (7za.exe) befindet sich an einem Ort, der in der Variablen PATH festgelegt ist." Momentan funktioniert es nur, wenn ich alle 7z Exe / DLL-Dateien im Verzeichnis der zu konvertierenden Dateien habe. aber ich möchte das Skript mit einem / s-Schalter für Unterverzeichnisse / rekursiv verwenden, und es schlägt fehl, wenn es in ein Verzeichnis eingeht und die 7z exe / dll-Dateien nicht vorhanden sind.

-

http://www.howtogeek.com/50893/easily-convert-all-your-zip-archives-to-7z-archives/

Hier ist das Skript -

 @ECHO OFF ECHO Deep Archive ECHO Written by: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO.  REM Takes a Zip file and recompresses it as 7z archive. REM Script process: REM 1. Decompress the existing archive. REM 2. Compress the extracted files in 7z format. REM 3. (optional) Validate the new 7z file. REM 4. (optional) Delete the source archive. REM REM Usage: REM DeepArchive ZipFile REM REM Requirements: REM The 7-Zip command line tool (7za.exe) is in a location set in the PATH variable. REM REM Additional Notes: REM This script processes a single zip archive. REM To process all zip archives in a folder, use the ForFiles command from the command line: REM FORFILES /P "pathtozipfiles" /M *.zip /C "cmd /c DeepArchive @path" REM REM To run the archive compression/decompression as low priority background processes REM add this in front of the 7ZA commands (DO NOT add this in front of the validation 7ZA command): REM START /BelowNormal /Wait  REM Adding the above command will use a new window to perform these operations.  SETLOCAL EnableExtensions EnableDelayedExpansion  REM Should the deep archive file be validated? (1=yes, 0=no) SET Validate=0  REM Compression level: 1,3,5,7,9 (higher=slower but more compression) SET CompressLevel=5  REM Delete source zip file on success? (1=yes, 0=no) SET DeleteSourceOnSuccess=1   REM ---- Do not modify anything below this line ----  SET ArchiveFile=%1 SET DeepFile=%ArchiveFile:.zip=.7z% SET tmpPath=%TEMP%%~nx1 SET tmpPathZip="%tmpPath%*" SET tmpPath="%tmpPath%" SET tmpFile="%TEMP%tmpDeepArchive.txt"  IF NOT EXIST %tmpPath% ( MKDIR %tmpPath% ) ELSE ( RMDIR /S /Q %tmpPath% )  ECHO Extracting archive: %ArchiveFile% 7ZA x %ArchiveFile% -o%tmpPath% ECHO.  ECHO Compressing archive: %DeepFile% 7ZA a -t7z -mx%CompressLevel% %DeepFile% %tmpPathZip% ECHO.  IF {%Validate%}== ( ECHO Validating archive: %DeepFile% 7ZA t %DeepFile% | FIND /C "Everything is Ok" > %tmpFile% SET /P IsValid=< %tmpFile% IF !IsValid!==0 ( ECHO Validation failed! DEL /F /Q %DeepFile% ECHO. GOTO Fail ) ELSE ( ECHO Validation passed. ) ECHO. ) GOTO Success   :Success IF {%DeleteSourceOnSuccess%}== DEL /F /Q %ArchiveFile% ECHO Success GOTO End   :Fail ECHO Failed GOTO End   :End IF EXIST %tmpFile% DEL /F /Q %tmpFile% IF EXIST %tmpPath% RMDIR /S /Q %tmpPath%  ENDLOCAL 

Hier ist mein editiertes Skript, damit es für .rar funktioniert -

@ECHO OFF ECHO Deep Archive ECHO Written by: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO.  REM Takes a Zip file and recompresses it as 7z archive. REM Script process: REM 1. Decompress the existing archive. REM 2. Compress the extracted files in 7z format. REM 3. (optional) Validate the new 7z file. REM 4. (optional) Delete the source archive. REM REM Usage: REM DeepArchive ZipFile REM REM Requirements: REM The 7-Zip command line tool (7za.exe) is in a location set in the PATH variable. REM REM Additional Notes: REM This script processes a single zip archive. REM To process all zip archives in a folder, use the ForFiles command from the command line: REM FORFILES /P "path\to\zip\files" /M *.zip /C "cmd /c DeepArchive @path" REM REM To run the archive compression/decompression as low priority background processes REM add this in front of the 7ZA commands (DO NOT add this in front of the validation 7ZA command): REM START /BelowNormal /Wait  REM Adding the above command will use a new window to perform these operations.  SETLOCAL EnableExtensions EnableDelayedExpansion  REM Should the deep archive file be validated? (1=yes, 0=no) SET Validate=0  REM Compression level: 1,3,5,7,9 (higher=slower but more compression) SET CompressLevel=9  REM Delete source zip file on success? (1=yes, 0=no) SET DeleteSourceOnSuccess=0   REM ---- Do not modify anything below this line ----  SET ArchiveFile=%1 SET DeepFile=%ArchiveFile:.rar=.7z% SET tmpPath=%TEMP%\%~nx1 SET tmpPathZip="%tmpPath%\*" SET tmpPath="%tmpPath%" SET tmpFile="%TEMP%\tmpDeepArchive.txt"  IF NOT EXIST %tmpPath% ( MKDIR %tmpPath% ) ELSE ( RMDIR /S /Q %tmpPath% )  ECHO Extracting archive: %ArchiveFile% 7Z x %ArchiveFile% -o%tmpPath% ECHO.  ECHO Compressing archive: %DeepFile% 7Z a -t7z -mx%CompressLevel% %DeepFile% %tmpPathZip% ECHO.  IF {%Validate%}== ( ECHO Validating archive: %DeepFile% 7Z t %DeepFile% | FIND /C "Everything is Ok" > %tmpFile% SET /P IsValid=< %tmpFile% IF !IsValid!==0 ( ECHO Validation failed! DEL /F /Q %DeepFile% ECHO. GOTO Fail ) ELSE ( ECHO Validation passed. ) ECHO. ) GOTO Success   :Success IF {%DeleteSourceOnSuccess%}== DEL /F /Q %ArchiveFile% ECHO Success GOTO End   :Fail ECHO Failed GOTO End   :End IF EXIST %tmpFile% DEL /F /Q %tmpFile% IF EXIST %tmpPath% RMDIR /S /Q %tmpPath%  ENDLOCAL 
0
Mögliches Duplikat von [Was sind PATH und andere Umgebungsvariablen, und wie kann ich sie festlegen oder verwenden?] (Http://superuser.com/questions/284342/what-are-path-and-other-environment- variables-and) -wie-kann-ich-set-oder-verwenden-sie) DavidPostill vor 7 Jahren 0
Fügen Sie das Verzeichnis, in dem Sie "7za.exe" installiert haben, zu Ihrem System oder Benutzer PATH hinzu. Anweisungen finden Sie in der Duplikatfrage. DavidPostill vor 7 Jahren 0
DavidPostill, danke! Ich wusste nicht, dass es sich um eine Windows-Umgebungsvariable handelte. Ich dachte, es beziehe sich auf einen variablen Satz innerhalb des Skripts. Ich habe die erforderlichen Dateien erfolgreich zu c: \ windows hinzugefügt. Dies ist ein Standardpfad% in Windows 7, der den Trick ausgeführt hat. Danke dir! seanpf vor 7 Jahren 0

0 Antworten auf die Frage