我想创建一个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
答案 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=
(整体 - 将=
更改为分隔符,而不是分隔符)]