Пакетное преобразование .rar в .7z - переменная пути?

533
seanpf

Я нашел кого-то, кто написал очень хороший пакетный скрипт для преобразования .zip в .7z, и я пытаюсь заставить его конвертировать .rar в 7z. Я могу заставить скрипт работать, но я не могу понять, где установлена ​​переменная «PATH», как объяснено «Средство командной строки 7-Zip (7za.exe) находится в местоположении, установленном в переменной PATH». В настоящее время единственный способ, которым это работает, - это убедиться, что все 7z exe / dll файлы находятся в каталоге файлов, которые необходимо преобразовать. но я хочу использовать скрипт с ключом / s для подкаталогов / recursive, и он завершается неудачно, когда входит в каталог, а файлы 7z exe / dll отсутствуют.

-

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

Вот сценарий -

 @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 

Вот мой отредактированный скрипт, чтобы он работал для .rar -

@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
Возможный дубликат [Что такое PATH и другие переменные среды, и как я могу их установить или использовать?] (Http://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and -Как-могу-я-набор или потребительные их) DavidPostill 8 лет назад 0
Добавьте каталог, в который вы установили `7za.exe`, к вашей системе или пользователю PATH. Смотрите дубликат вопроса для получения инструкций. DavidPostill 8 лет назад 0
DavidPostill, спасибо! Я не понимал, что это ссылается на переменную среды Windows, я думал, что это ссылается на набор переменных внутри скрипта. Я успешно добавил необходимые файлы в c: \ windows, который является% path% по умолчанию в Windows 7, что и помогло. благодарю вас! seanpf 8 лет назад 0

0 ответов на вопрос

Похожие вопросы