batch-file - 从具有许多子目录的主目录中批量提取特定文件类型

标签 batch-file

我有很多包含存档文件的文件夹, 带有子文件夹的父文件夹例如

图形:

  • 图形01012021/file31241.7z
  • 图形01022021/file4231.7z
  • 零碎01032022/filejohnny.7z

等 每个文件夹都包含一个存档 - 各种名称编号。 每个文件包含各种文件、pdf、txt 文件、发票和图像文件。 通常图像是.jpg,命名为各种名称。

我想做的是批量攻击父文件夹,从每个子目录的每个存档中提取图像文件,并将图像及其来源存档保留在子目录中。如果存档有多个图像也没关系,我不会针对单个特定图像。

希望最终能得到类似的结果

图形:

  • 图形01012021/ 文件31241.7z 黄石公园.jpg 打火石.jpg
  • 图形01022021/ 文件4231.7z 玛莎.jpg
  • 零碎01032022/ 文件约翰尼.7z 阿耳忒弥斯.jpg 法式 toast .png

如果可能的话,我宁愿避免提取分隔图像的所有文件,然后重新存档。

我最初尝试发现的是,将图像文件批量提取到其所属目录,并将图像文件重命名为其目录名。我没有找到解决方案,所以我认为如果可能的话,只需提取图像就可以了,我可以使用重命名应用程序来执行其他操作,一旦我开始思考,我发现批量重命名实用程序就很好了它。 你不会想到这些年来你会收集这么多的文件,就像小水滴最终变成了海洋。

我尝试过研究堆栈,并看到了很多有关 7zip 工作原理的示例,但我就是无法完全理解它。

我即将退休,他们告诉我 65 岁是鸡舍的时间,我在 gfx 行业的大部分时间都是推铅笔和滑鼠的。我曾经知道每个文件里有什么,但内存有点怎么说……现在生锈了,我知道我所有的文件里都有图像。在日落时,我的生活会轻松得多,看看这些照片,而不必绞尽脑汁试图记住文件本身中的内容。

来自下方殖民地的欢呼和欢呼。

脾气暴躁

最佳答案

要回答您的问题,任务很简单,涉及带有递归的 For 循环,但是为了保持稳健,如果不知道这些特定的长期可能混合的 7zip 文件如何分割,解决方案将很复杂,因此如果7zip 本身有两个子文件夹,其中包含相同的命名文件,您将遇到错误情况。我允许在必要时使用 -aou 自动重命名。但是我没有将文件夹名称添加到每个文件中,因为这是一个额外的步骤。

@echo off & Title Extract Images from 7z files
set "extractor=C:\Program Files (x86)\7-Zip\7z.exe"
set "archives=*.7z"
set "filetypes=*.png *.jpg *.jpeg *.tif *.tiff"
set "startDir=C:\Users\WDAGUtilityAccount\Desktop"

FOR /R "%startdir%" %%I IN (%archives%) DO ( "%extractor%" e "%%I" -o"%%~dpI" %filetypes% -aou)

您可以添加额外的存档类型,例如 .rar 或 .zip,就像我允许不同的图像文件类型一样。但是,请首先测试此类变化,否则第二次运行将调用现有重复项的自动命名。 您当然可以将 -aou 更改为 -aos 以避免覆盖或根据需要将其删除

Windows 上的另一种方法是,可以导航标准 windows.zip 文件,从而将其保存为压缩文件夹,单击每个文件将在默认应用程序中打开。因此,当您希望使用非默认应用程序时,只需提取到该文件夹​​即可。

enter image description here

与您的需求更直接相关的第二个优点是,某些查看者可以只阅读图像并忽略任何其他内容(即使他们可以阅读文本或 html),我支持读取 zip 中的图像的一个是 SumatraPDF,尽管不是列出它可以打开.7Z文件以相同的方式显示

enter image description here

因此,我对所提出问题的回答是,我建议将 7zip 转换为标准 zip,而不是扩展它们,或者使用 SumatraPDF 作为默认/替代 7z 查看器!!。

关于batch-file - 从具有许多子目录的主目录中批量提取特定文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71632153/

相关文章:

windows - 在批处理文件中获取两个级别的路径

excel - 尝试从 VBA 运行 .bat 脚本失败且没有错误代码

batch-file - 您可以从命令行运行 AIR 应用程序吗?

windows-7 - 在批处理文件中检查计算机是否已插入交流电源

batch-file - 使用批处理将文件复制到一个文件中

windows - 使用批处理脚本将命令输出到文件

windows - 为什么在迭代命令输出时批处理文件 FOR 失败?

java - JDBC批量更新问题

windows - 批处理文件中的 at 符号 (@) 是什么,它有什么作用?

windows - 抑制 Windows 命令行中的错误消息