|
Answer» Hi All,
I am new to Dos Batch. My problem now is that I need to loop through a directory with many subfolders. I need to zip those subfolders (using 7ZIP) and place the zipped subfolders into another directory.
Before zipping My main root is C:\Users\ayaka\Desktop\ZipTask\TestingDirectory Sample FOLDERS: C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\April2001\temp123\temp123.html C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\April2001\temp234\temp234.html C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\May2001\temp345\temp345.html C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\May2001\temp456\temp456.html
After zipping C:\Users\ayaka\Desktop\ZipTask\TestDir
The folders should be zip according to the month and year. So, there should be 2 zipped folders, mainly April2001 and May2001 in C:\Users\ayaka\Desktop\ZipTask\TestDir
I had done ABIT of coding, but it doesn't really work.
Here's the code:
Code: [Select]@ECHO off
FOR /R C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\ %%G IN (*) DO (
for /F "tokens=1-7 delims=\ " %%i in ("%%G") do ( Set folder=%%o Set path=%%i\%%j\%%k\%%l\%%m\%%n\%%o
cd C:\Users\ayaka\Desktop\ZipTask\7za920
7za.exe a -t7z %path%\%folder%.7z C:\Users\ayaka\Desktop\ZipTask\TestDir
)
) @ECHO on
Can anyone help me? Thanks.I managed to create the batch file to do it. But I have no idea why the program stopped after the first zipped folder is made.
Here's the new code:
Code: [Select]@ECHO off FOR /R C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\ %%G IN (*) DO ( FOR /f "tokens=1-7 delims=\ " %%i in ('dir /b /s "%%G"') do (
IF NOT EXIST C:\Users\ayaka\Desktop\ZipTask\TestDir\%%o.7z (
echo %%i\%%j\%%k\%%l\%%m\%%n\%%o
cd C:\Users\ayaka\Desktop\ZipTask\7za920
7za.exe a -t7z C:\Users\ayaka\Desktop\ZipTask\TestDir\%%o.7z C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\%%o ) ) ) @ECHO on
Output: C:\Users\ayaka\Desktop\ZipTask\TestDir\April2004.7z
The output should also include this file, but the program did not continue: C:\Users\ayaka\Desktop\ZipTask\TestDir\May2004.7zFinally, I made it. But it will take a very long time if there are alot of folders in each folder and many files in each folder.
Here's the code:
Code: [Select]@echo off
echo.going to execute loop call:loop echo.returned from loop echo.&pause&goto:eof
:loop FOR /R C:\Users\ayaka\Desktop\ZipTask\TestDir\ %%G IN (*) DO ( echo.going to execute cont call:cont %%G echo.returned from cont ) echo.going back to loop echo.&pause&goto:eof
:cont FOR /f "tokens=1-7 delims=\ " %%i in ('dir /b /s "%~1"') do ( echo %%i\%%j\%%k\%%l\%%m\%%n\%%o >> path.txt IF NOT EXIST C:\Users\ayaka\Desktop\ZipTask\testingFolder\%%o.7z ( cd C:\Users\ayaka\Desktop\ZipTask\7za920 7za.exe a -t7z C:\Users\ayaka\Desktop\ZipTask\testingFolder\%%o.7z C:\Users\ayaka\Desktop\ZipTask\TestingDirectory\%%o ) ) goto:eof
Anybody has any idea on how to improve this? So that it can be done efficiently?
|