7zip: compress from the command-line; a few notes and a small batch file
Posted by jpluimers on 2017/04/04
I wanted to compress a few files from the current directory in a zip file using the 7z.exe command-line version of 7zip.
The trick is about finding where 7z.exe is as the directory containing 7z.exe is not in the Windows PATH.
Notes:
- you cannot use
7zExe
as environment variable as it will class with%7
being a parameter. - it uses a for loop with usebackq and space delims to do the parsing
SortDateTime.bat
fills the environment variablesSortDate
,SortTime
andSortDateTime
with the current valuesyyyymmdd
,hhnnss
andyyyymmddhhnnss
for sortable archive naming- if you use relative directory names as part of the file names, then that directory structure gets added to the zip file; if you don’t want that, then use absolute filenames or prepend the directories with a dot and the path-delimiter (/ in Linux, \ in Windows).
setlocal call SortDateTime.bat echo %SortDateTime% %SortDate%-%SortTime% for /f "usebackq tokens=2* delims= " %%c in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip" /v Path`) do ( set sevenzExe="%%d7z.exe" ) endlocal & if exist %sevenzExe% %sevenzExe% a -tzip _my-build.%SortDate%-%SortTime%.zip MyServer.exe MyServer.map MyClient.exe MyClient.map pause
–jeroen
Leave a Reply