2017-01-02 1 views
0

Я хочу создать файл bat, который сжимает все папки внутри определенного каталога, а затем удаляет их. Например, структуры папок (перед запуском файла BAT):Как создать файл bat, который застегивает все папки с помощью winzip?

VidoesArch 
     January 
     February 
     March 
     .... 
    TextualArch 
     January 
     February 
     March 
     .... 


Folder structure (after running bat file): 
    VideosArch 
     January.zip 
     February.zip 
     March.zip 
     .... 
    TextualArch 
     January.zip 
     February.zip 
     March.zip 
     .... 

Это то, что я разработал до сих пор:

@echo off 
setlocal 
set INPBKP=C:\Data\Backup\VideosArch 
set OUTBKP=C:\Data\Backup\TextualArch 
set WZLOC=C:\PROGRA~2\WINZIP 

:: Caution: Use a drive where sufficient disk space is available for this setting. 
set WORKDIR=K:\ 

:: DO NOT CHANGE ANYTHING BEYOND THIS POINT 

set COMPCMD="%WZLOC%\WZZIP.EXE" -m -ex -b%WORKDIR% -a 

for /F "USEBACKQ DELIMS==" %%t in (`dir %INPBKP%\*.dat /a/s/b`) do @%COMPCMD% %%t.zip %%t 
for /F "USEBACKQ DELIMS==" %%t in (`dir %OUTBKP%\*.dat /a/s/b`) do @%COMPCMD% %%t.zip %%t 

endlocal 

Что этот файл делает, он пронестись все .dat файлы папки. То, что я хочу достичь, это закрепить все папки.

Update:

Я изменил содержимое файла, и теперь он выглядит следующим образом. Это не работает. Если я попытаюсь запустить в командной строке, он говорит: «Система не может найти указанный файл».

@echo off 
setlocal 
set INPBKP=C:\Data\Backup\VideosArch 
set OUTBKP=C:\Data\Backup\TextualArch 
set WZLOC=C:\PROGRA~2\WINZIP 

:: Caution: Use a drive where sufficient disk space is available for this setting. 
set WORKDIR=C:\ 

:: DO NOT CHANGE ANYTHING BEYOND THIS POINT 

set COMPCMD="%WZLOC%\WZZIP64.EXE" -r -p -m -ex -b%WORKDIR% 

for %%s in ("%INPBKP%" "%OUTBKP%") do for /F "DELIMS==" %%t in ('dir %%s /ad /b') do %COMPCMD% %%~nt.zip "%%~s\%%t" 

endlocal 

ответ

0
set COMPCMD="%WZLOC%\WZZIP.EXE" -r -p -m -ex -b%WORKDIR% 

for /F "DELIMS==" %%t in ('dir %INPBKP% /ad /b') do %COMPCMD% "%INPBKP%\%%~nt.zip" %INPBKP%\%%t 

Добавление -r -p в команду компресс должен собрать и сохранить все файлы и каталоги.

Выполняя dir /b /ad, %%t будут назначены имена каталогов из целевого каталога. %%~nt выбирает просто часть имени. usebackq не требуется, если используются одинарные кавычки.

Вы могли бы также использовать

for %%s in ("%INPBKP%" "%OUTBKP%") do for /F "DELIMS=" %%t in ('dir /ad /b %%s') do %COMPCMD% "%%~s\%%~nt.zip" "%%~s\%%t" 

%%s, содержащие цитируемый DirectoryName и %%~s без кавычек (в случае сепараторов в directorynames)

Я не проверял это, так что я предлагаю вам попробовать сначала в некоторых одноразовых тестовых каталогах.

[править - вставить каталог назначения для zip файла] [также изменен delims== в delims= (косметический - изменение = как разделитель не разделителя)]

+0

Его не работает. См. Обновление. – JohnLogan1017

+0

К сожалению, «не работает» не дает много подсказок. Он закрепил содержимое каждого подкаталога двух назначенных каталогов в * nominated * \ subdirname.zip для меня. – Magoo

+0

Его работы. Дает коэффициент сжатия 90%. Благодарю. – JohnLogan1017

Смежные вопросы