使用通配符压缩文件的批处理脚本

时间:2014-08-21 19:37:32

标签: batch-file batch-processing

我有一个包含600个文本文件的文件夹,我希望将具有相似标识符的文件压缩在一起。因此,例如我有10个文件,其中id001~作为标识符,这10个文件将被压缩在同一目录中,依此类推。到目前为止,我有一个代码,当你硬编码文件名时将压缩1个文件。我不确定这是否应该从列表中读取或者为zip文件指定某种通配符标准

非常感谢任何帮助。

echo off
set archievePatch=id001~testfile3.txt
7z.exe a %archievepatch%.zip "%archievePatch%" 

PATH :\Users\Jeffery\Desktop\TestFolder
pause
exit

这将输出一个名为:id001~testfile3.zip

的zip文件

1 个答案:

答案 0 :(得分:1)

基于一个文件名如下所示的示例,只要前5个字符相等,以下脚本就会将所有文件组合在一个zip文件中。

for /f %%f in ('dir /b /on *.txt') do call :onefile %%f

goto :eof

:onefile
set arg1=%1

rem here is the number of characters configured that form a group
set grp=%arg1:~0,5%

call :zipit %arg1% %grp%
goto :EOF

:zipit
rem remove echo when done debugging
echo 7z.exe a "%2.zip" "%1"
goto :EOF

这会创建一个文件id001.zip,其中所有文件都以id001开头,如id001~testfile3.txt等。

这是如何工作的?

来自help set(或SET /?)页:

  

...
  也可以指定扩展的子字符串   %PATH:~10,5%
  会扩展PATH环境变量,然后只使用5   从展开的第11个(偏移10)字符开始的字符   结果。如果未指定长度,则默认为   变量值的其余部分   ...

dir命令接受/b参数以裸格式列出文件,/o允许您指定顺序,n表示按字母顺序排列文件名。