0

I found someone who had written a very nice batch script to convert .zip to .7z, and im attempting to make it convert .rar to 7z. I am able to get the script to work but I cannot figure out where the "PATH" variable is set, as explained "The 7-Zip command line tool (7za.exe) is in a location set in the PATH variable." Currently the only way it works is if I make sure to have all the 7z exe/dll files in the directory of the files that need converting. but I want to use the script with a /s switch for sub directories/recursive, and it fails when it enters a directory and the 7z exe/dll files are not present.

-

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

Here is the script -

    @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%}=={1} (
   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%}=={1} 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

Here is my edited script to make it work for .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%}=={1} (
    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%}=={1} 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
  • Add the directory where you installed 7za.exe to your system or user PATH. See the duplicate question for instructions. – DavidPostill May 19 '16 at 22:26
  • DavidPostill, Thank you! I did not realize it was referring to a windows environment variable, I thought it was referring to a varible set within the script. I have successfully added the required files to c:\windows which is a default %path% in windows 7, which did the trick. thank you! – seanpf May 20 '16 at 18:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.