我有一个包含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文件答案 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
表示按字母顺序排列文件名。