Automatically zip files with batch file

Hi Experts,

I'm trying to make a batch script that automatically zips files and deletes them after worths. Because 7-zip is a powerful tool and easy to use in the command line, i have chosen to use it.

The problem is as following:
There is an input directory(Figure 1) that have subdirectories( subdirectories or numbered 1, 2, 3, 4, etc (Figure 2)). In these directories there are files (Figure 3). All these files need to be zipped one by one with a high compression ratio and deleted after worths. The deletion needs to take place right after the file has been zipped.

My idea was make a batch file with a for loop to zip and delete the file.

Please help me out here!

Who is Participating?
QlemoConnect With a Mentor Batchelor, Developer and EE Topic AdvisorCommented:
Too bad 7zip doesn't allow for move ... We have to do it manually. I used the above recompression tutorial to construct a more simple batch for your requirements. The && is for preventing deletion after zipping error.
This batch will zip ANY pdf under the D:\opleveringen folder.

@echo off
for /F "tokens=*" %%F in ('dir /s/b D:\Opleveringen\*.pdf') do (
  "C:\Program Files\7-Zip\7z" a -t7z "%%~dpnF.7z" "%%F" -mx=9 && del "%%F"

Open in new window

Shanmuga SundaramDirector of Software EngineeringCommented:
See here for learning how to use 7-zip in a batch file
Shanmuga SundaramDirector of Software EngineeringCommented:
DonOetjeAuthor Commented:
Thanks for you input. I made its with the information you gave me.

I still have one problem. I made some test directories with 10 files in the directory (Figure 1). But when i run this script i only get 4 files (Figure 2), with all 10 files(Figure 3). How can i tune this script so it will zip all file apart of from the others?
@ECHO off
REM *Set options to control the visibility of environment variables in a batch file.
REM *Provide a source, destinaion and the path where to locate 7-zip
SET _source="C:\Test1"
SET _dest="C:\Test1"
SET _wrpath=C:\Program Files\7-Zip
REM *Check if the destination directory exist. If not the script will make it 
IF NOT EXIST %_dest% MD %_dest%
REM *Zip every file from the source directory and place the zip file in the destination directory, after worths delete the source file
FOR %%I IN (%_source%\*) DO (
	"%_wrpath%\7z" a -t7z "%_dest%\%%~nI.7z" "%%I" -mx=9
	REM && DEL "%%I" /I

Open in new window

QlemoBatchelor, Developer and EE Topic AdvisorCommented:
That is because the source files have an extension .pdf_*, and the file name is the same.
Change line 16 to maintain the file extension for the ZIP file.

"%_wrpath%\7z" a -t7z "%_dest%\%%~nxI.7z" "%%I" -mx=9

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.