• 0

7zip in a batch file


Question

Hi,

I have a batch file that runs each day and downloads about 20 .zip files from a network share to a server which then extracts them.. before continuing with other bits and bobs

the copying is carried out by ROBOCOPY, and the extraction done by 7zip

this was all working fine til yesterday when i realised my process was falling over every time. Turns out one of the .zip files was corrupt and when it tried to extract the batch file just bombs out

7zip has a file integrity check option but i cant for life of me figure out how to get the result of this check into something like an IF THEN ELSE execute the extract part

options i have considered:

1. only copy correct files with robocopy (cant work out how to check integrity, or even if its possible)

2. do a crc on the files - not really useful as i dont know what the results should be

3. use the 7zip t flag in some manner - 7z.exe t filename.zip and generate an ERRORLEVEL in the batch... bit lost on this one??????

5. batch file try-catch 'hack' - ok i was desperate at this point... :)

can anyone figure out a clever method of making this work? i will be eternally grateful because its starting to really **** me off... :p

perhaps i could run a check, output the successful results to a file and then only extract the filenames that are contained in that file??

thanks all

a frustrated chris :|

Link to comment
https://www.neowin.net/forum/topic/622510-7zip-in-a-batch-file/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

7z t -r filename.zip

might work. If you don't specify a recurse parameter, and your archive has directories inside it, it will not generate an error if the files and directories at the top level of the archive are OK.

Other than that, I have no ideas. :p

I wonder... Could it be the extraction process that is messing things up? You might consider that option, in which case you could consider using something like PicoZip to extract the files and compare the results.

  • 0
3. use the 7zip t flag in some manner - 7z.exe t filename.zip and generate an ERRORLEVEL in the batch... bit lost on this one??????

Try something like:

@echo off
REM *
REM Test zip
REM *
7za.exe t filename.zip
REM *
REM 0 = no error, else error.
REM *
IF %ERRORLEVEL% == 0 ( GOTO EXTRACT ) ELSE ( GOTO ERROR )

:EXTRACT
echo.
echo Extracting zip...
echo.
GOTO END

:ERROR
echo.
echo Error: %ERRORLEVEL%
echo.

:END

7-Zip returns the following exit codes:

Code Meaning

0 No error

1 Warning (Non fatal error(s)). For example, one or more files were locked by some other application, so they were not compressed.

2 Fatal error

7 Command line error

8 Not enough memory for operation

255 User stopped the process

  • 0
I wonder... Could it be the extraction process that is messing things up? You might consider that option, in which case you could consider using something like PicoZip to extract the files and compare the results.

its possible i suppose, i did manage to atleast open the file with winrar...

it still gave an error mind you, i might investigate that tomorrow...

@Wilhelmus: thanks for that! ill give it a shot tomorrow, i am assuming that thats completely untested and off the top of your head???

also, i spent a good 2 hours today searching for error codes, or infact any sort of error output for 7zip so double thanks for the heads up :)

  • 0

Ok, so with the great help from Wilhelmus I finally achieved my goal! :)

Here’s the code in case anyone is interested... It accepts a path name of where the files are located as an argument at the command line and runs through all matching files checking the integrity before attempting an unzip if they are valid..

Most importantly doesn’t bomb out if they are invalid! Woo

@echo off

REM Map source location to a drive letter
NET USE z: /delete
NET USE z: \\server\folder\sub /p:yes


REM Copy all zip files in mapped folder to temp directory 
ROBOCOPY Z:\  %1 /MIN:5


REM Change to 7zip directory
cd "c:\Program Files\7-Zip"
c:


REM Process each file in the temp directory..
for /f %%a in ('dir /b %1\b_*.zip') do call :PROCESS %1 %%a
GOTO :EOF


:PROCESS
REM Test the integrity of the file
7z t %1\%2


REM 0 = no error, else error.
IF %ERRORLEVEL% == 0 ( GOTO EXTRACT ) ELSE ( GOTO ERROR )


REM Extract the valid files into the temp directory
:EXTRACT
7z e %1\%2 -o%1 -y
GOTO END


:ERROR
echo Error: %ERRORLEVEL%


:END

Edited by BGM
  • 0

Hi,

I am trying to do similar thing as you did last year. I have a bach file and need to run 7z t command to test zip files and write result in a log file.

I did something. it creates log file and test files in cmd line. I see that testing the files running on screen, but not write it into log file. I am not fimiliar with a batch file and 7zip. Please help meeee

Ok, so with the great help from Wilhelmus I finally achieved my goal! :)

Here?s the code in case anyone is interested... It accepts a path name of where the files are located as an argument at the command line and runs through all matching files checking the integrity before attempting an unzip if they are valid..

Most importantly doesn?t bomb out if they are invalid! Woo

@echo off

REM Map source location to a drive letter
NET USE z: /delete
NET USE z: \\server\folder\sub /p:yes


REM Copy all zip files in mapped folder to temp directory 
ROBOCOPY Z:\  %1 /MIN:5


REM Change to 7zip directory
cd "c:\Program Files\7-Zip"
c:


REM Process each file in the temp directory..
for /f %%a in ('dir /b %1\b_*.zip') do call :PROCESS %1 %%a
GOTO :EOF


:PROCESS
REM Test the integrity of the file
7z t %1\%2


REM 0 = no error, else error.
IF %ERRORLEVEL% == 0 ( GOTO EXTRACT ) ELSE ( GOTO ERROR )


REM Extract the valid files into the temp directory
:EXTRACT
7z e %1\%2 -o%1 -y
GOTO END


:ERROR
echo Error: %ERRORLEVEL%


:END

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • EA launches in-game advertising platform for brands to "connect with audiences" by Pulasthi Ariyasinghe The gaming giant Electronic Arts is exploring more ways to inject real-life brands into its games. Announced today as EA Advertising, the new platform is attempting to make it easier for brands to reach out for deals with the company and put their products inside titles like EA Sports FC, Madden, NHL, Skate, or The Sims. EA revealed that its EA Sports side of the company brings in "hundreds of millions of players across console, PC, and mobile" every year. Fan engagement of these titles was also touted as being "extraordinary," with 23,000 NFL seasons worth of games being played in Madden NFL daily, while EA Sports FC sees over a billion matches a day. “Players come to EA’s games and live experiences every day to play, watch, create and connect,” said David Tinson, Chief Experiences Officer at Electronic Arts. “That gives brands a meaningful opportunity to show up in ways that add value and respect the player experience, while maintaining authenticity in the worlds our teams are building. With EA Advertising, we’re helping brands become part of those moments in ways that are relevant and built for players.” Using the new program EA Advertising, brands will be able to inject their products into games in real-time via dynamic placement. EA says partners will have access to everything from stadium signage in sports games and targeted adverts to in-game content custom-made for the brands. These are described as additions designed to "enhance, not disrupt" experiences. "In these interactive gameplay environments, brands become part of the game itself, reflecting how players engage with advertising in real-world contexts," adds the company "Brands can activate across live environments, tailoring placements to meet campaign objectives, and update campaigns with ongoing optimization informed by aggregated engagement insights." Current real-world brand partnerships EA has built into its games include Visa (EA Sports FC and College Football), Lowe's (EA Sports FC, Madden NFL, and College Football), Red Bull (EA SPORTS FC), Xfinity and Peacock (EA SPORTS FC), and Mountain Dew’s (College Football).
    • Will be surprised if there isn't a new ver of youtube just for labelled educational content
    • UK to ban under-16s from social media following a six-week trial with teenagers by Paul Hill Credit: Pexels A few months ago, Neowin reported that the UK was trialing a social media ban with 300 teenagers for six weeks, that testing has come to an end, and Prime Minister Keir Starmer has announced that the country will ban under-16s from social media. Starmer said that this technology is making children unhappy and making it easier for bullies to harass and abuse them. He continued to talk about the addictive nature of social media, saying that it uses an infinite scroll designed to lock users in for hours. He said this interferes with children doing their homework, reading, playing with friends outside, and going to bed on time. Tackling the idea that nothing can be done about social media, Starmer said: The government’s action won’t stop at social media either, the PM said. It plans to take action on gaming services and livestreaming platforms. Right now, he said, strangers can contact any child unchecked. He said this wouldn’t happen in real life, and the government is going to stop it from happening online, too. The Labour government has overseen the introduction of the Online Safety Act, a big change to the internet which includes age verification on adult websites. This has led to a fair bit of backlash, but overall, the government is pushing ahead with these changes.
    • Still using Hexchat every day but i would not consider it Retro 😛
    • HONOR Robot Phone unveils first Cinematic Video at Shanghai International Film Festival by Steven Parker Global AI device ecosystem company HONOR announced on June 13 that its revolutionary HONOR Robot Phone made its professional imaging debut at the 28th Shanghai International Film Festival (SIFF), demonstrating the result of its mobile videography capabilities for the first time. As the official mobile photography and videography partner of the 28th Shanghai International Film Festival, HONOR empowers this premier cinematic event with cutting-edge mobile imaging technology. Marking the global debut of the first cinematic video it captured, Robot Phone breaks down the boundaries between mobile imaging and professional filmmaking, ushering in a new paradigm for the deep integration of technology and cinematic art. In the video published on HONOR’s official channel (above), Robot Phone was used byELLEMEN to capture cinematic video portraits for the SIFF jury members. With its exceptional stability and cinema-grade imaging capabilities, the device redefines the art of portrait filmmaking, faithfully reproducing the rich tonal gradations and nuanced color transitions associated with film photography. The result is a new level of visual sophistication, creating high-end cinematic imagery that seamlessly blends atmosphere with narrative tension. The video released for the Robot Phone showcases the powerful stabilization capabilities of its built-in gimbal system, delivering exceptionally smooth handheld camera movement while preserving full image quality. By minimizing reliance on electronic image stabilization, the device effectively avoids the image cropping and quality loss typically associated with digital stabilization methods. Representing an innovative leap in form factor, the HONOR Robot Phone features the industry's smallest titanium alloy gimbal, delivering ultra-precision, extreme flexibility, and superior stability. Driven by high-performance motors, the gimbal rises dynamically, breaking free from the physical limitations of traditional camera modules. Combined with advanced AI algorithms that enable intelligent object tracking and various movements with stable shots, the device significantly simplifies video creation and reshapes both the equipment choices and creative habits of modern users. Notably, the Robot Phone will be the first product that features the results of HONOR's strategic technological partnership with ARRI, the world-renowned designer and manufacturer of professional camera technology for cinematic storytelling. From Cannes to Shanghai, the HONOR Robot Phone continues to lead the mobile imaging industry into an entirely new stage of development. Moving forward, HONOR will leverage cutting-edge AI and mobile imaging technologies to unlock new creative possibilities and extend cinematic standards for visual expression from the world of high-end filmmaking to the next generation of content creators. Learn more about the HONOR Robot Phone here: https://www.honor.com/global/events/honor-robot-phone/
  • Recent Achievements

    • Week One Done
      Jeroen Wilms earned a badge
      Week One Done
    • Week One Done
      rolfus earned a badge
      Week One Done
    • One Month Later
      Leroy Jethro Gibbs earned a badge
      One Month Later
    • Conversation Starter
      flexorcist earned a badge
      Conversation Starter
    • One Month Later
      AndreaB earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      510
    2. 2
      +Edouard
      200
    3. 3
      PsYcHoKiLLa
      137
    4. 4
      ATLien_0
      90
    5. 5
      Steven P.
      84
  • Tell a friend

    Love Neowin? Tell a friend!