根据内容文件的名称将 7zip 划分为多个 zip[已关闭]

Divide 7zip into multiple zips based on names of content files [closed]

提问人:Sarah 提问时间:11/10/2023 更新时间:11/10/2023 访问量:32

问:


这个问题似乎与帮助中心定义的范围内的编程无关。

13天前关闭。

我有一堆非常大的 7zip 文件(最大 40 GB)。它们中的每一个都包含数千个单独的文件。我需要做的是根据内容文件的名称将它们拆分出来。

例如,我每年有一个zip,其中有一些文件与文件名中的模式匹配,然后是一大堆其他名称不同的文件。file_a_....txt

我目前拥有什么(每年 1 7z)

examplezip_2010.7z
├── file_a_1.txt
├── file_a_2.txt
├── file_a_3.txt
├── file_a_....txt
├── otherfile.txt
├── randomfile.txt
└── ....txt

我想要的是 1 个 zip(7z/zip,我不在乎)和我所有的 zip,另一个是所有其他文件。结婚file_a_....txt

A_file_zip_2010.7z
├── file_a_1.txt
├── file_a_2.txt
├── file_a_3.txt
└── file_a_....txt

Other_files_zip_2010.7z
├── otherfile.txt
├── randomfile.txt
└── ....txt

我想从命令行/bat 文件或类似文件执行此操作,因为我需要为大量 7zip 文件执行此操作。我尝试使用以下蝙蝠,它确实有效,但最后一个脚本(我相信)有效地制作了 2 个单独的 7zip,然后删除原始脚本,因此在重新复制所有文件时速度非常慢。file_a_...我想分离的文件通常只占总 2z 的 7% 左右,所以如果我能避免与其他 98% 一起移动/更改东西,那么应该希望能大大加快速度。

我没有与 7zip 结婚,但以 7z 的形式接收了文件,因此需要任何选项来使用它。全部运行在Windows计算机上。

批量尝试:

set filepref=file_a_
set yr=2012

REM extract files matching regex to folder
7z.exe e "examplezip_%yr%.7z" -r -o".\%filepref%_%yr%" -i!%filepref%*

REM zip new folder
7z.exe" a -t7z "%filepref%_%yr%.7z" ".\%filepref%_%yr%\*.*"

REM delete files matching regex to folder
REM this is the step which seems to recopy everything
7z.exe d "examplezip_%yr%.7z" %filepref%* -r
批处理文件 zip 7zip

评论

3赞 Compo 11/10/2023
我投票决定关闭这个问题,因为代码审查可以帮助您改进工作代码。如果你的批处理文件有效,(你已经承认了),那么这个网站就不合适了。我们帮助您解决单个特定的代码问题。
0赞 Sarah 11/10/2023
我想我更多地认为它是在寻找不同的代码,因为我拥有的代码没有做我正在寻找的东西。但我也承认我在堆栈溢出中问过,因为这是我总是问问题的地方,而不是因为我对其他堆栈页面有很好的了解,以及它在哪里是合适的,所以如果它不在正确的地方,很乐意改变事情
0赞 Mofi 11/10/2023
请注意,这意味着对于 7-Zip,带点的文件系统条目应该匹配,没有点的文件应该被忽略。应该只用于匹配所有文件名,无论文件名中是否包含点。Windows 文件 IO 函数的解释总是像 一样。优化将在下面的命令行中使用另外一个选项,指示 7-Zip 将文件压缩到存档文件中,然后在成功添加到存档文件后将其删除。*.***.**7z.exeREM zip new folder-sdel
0赞 Mofi 11/10/2023
例如,通过双击文件打开的7-Zip的帮助包含选项卡内容列表项命令行版本和子列表项语法。此页面上写道,要使用的一般语法是 ,接下来是 7-Zip 命令,然后是所有具有 best 作为最后一个开关的开关、存档文件名和最后的其他参数,如文件/文件夹名称或通配符模式。不幸的是,该帮助包含许多示例,这些示例未将此通用语法指南应用于示例命令行,使读者感到困惑。7-zip.chm7z.exe--
1赞 Mofi 11/10/2023
更快的第一步是将现有存档文件中的所有文件提取到当前目录中具有存档文件名的子目录中,使用 next 将当前目录更改为提取目录,创建第一个存档文件,第二个存档文件使用 ,使用 和 最后。7z.exe x -bd -bso0 -o* -spe -y -- "examplezip_%yr%.7z"pushd "examplezip_%yr%"7z.exe a -bd -bso0 -r -sdel -t7z -y -- "..\A_files_%yr%.7z" "%filepref%*"7z.exe a -bd -bso0 -r -sdel -t7z -y -- "..\Other_files_%yr%.7z"popdrd /Q /S "examplezip_%yr%"

答: 暂无答案