如何创建使用winzip压缩所有文件夹的bat文件?

时间:2017-01-02 07:05:05

标签: windows batch-file compression

我想创建一个bat文件,压缩特定目录中的所有文件夹,然后删除它们。 例如, 文件夹结构(运行bat文件之前):

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文件。我想要实现的是它将拉链所有文件夹。

更新

我更改了文件内容,现在看起来像这样。它不起作用。如果我尝试在命令提示符下运行它会说 - '系统找不到指定的文件'。

@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

1 个答案:

答案 0 :(得分: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添加到compress命令应收集并保留所有文件和目录。

通过执行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包含引用的目录名和%%~s未加引号(如果是目录名中的分隔符)

我还没有测试过这个,所以我建议你先在一些易处理的测试目录上试试。

[编辑 - 插入zip文件的目标目录] [也将delims==更改为delims=(整体 - 将=更改为分隔符,而不是分隔符)]