仅当它们不存在时才批处理 Zip 文件不适用于不同目录中的相同文件名

金博·马奥尼

我正在尝试设置一个批处理文件(在 Windows 中),该文件仅在文件尚未作为 zip 存在时才压缩文件。

几乎让它工作了,但是对于不同目录中存在的相同文件名,它失败了(它只是忽略它们,假设它已经完成了它们)。

我认为我的代码只是查看文件名,忽略它们的位置,并且不知何故我还需要引用它们的位置。

我已经尝试搜索(并将继续搜索)解决方案,如果我找到一些东西,我会在这里发帖,但希望有人可以提出建议。

根据我的理解,下面的代码将递归搜索所有 fcs 文件并压缩(7z)它们,如果它也找不到 7z 格式的等效文件。

FOR /R %%f in (*.fcs) DO IF NOT EXIST "%%~nf.7z" (
            7z a -mm=LZMA2 -mx=1 -mmt24 "%%~pf%%~nf.7z" "%%f" 
    )

它几乎可以工作,但当相同的文件名存在于不同的目录中时,它会简单地忽略它们,因为它认为它们已经被压缩了。

我需要添加什么才能让它识别不同目录中的相同名称?

我考虑过比较两个列表,例如

dir /b /s /a-d *.fcs >FilestoZip
dir /b /s /a-d *.7z >FilesAlreadyZipped

但是我对批处理文件的了解太有限了!

金博·马奥尼

搞定了!

关键很简单 - 更改 IF NOT EXIST 以包含路径!(即只是将 ap 添加到“%%~nf.7z”。

=)

完整的工作代码:

FOR /R %%f in (*.fcs) DO IF NOT EXIST "%%~pnf.7z" (
            7z a -mm=LZMA2 -mx=1 -mmt24 "%%~pf%%~nf.7z" "%%f" 
    )

编辑 - 为了稍微加快速度(~10%),您还可以使用此处的 BROTLI 编解码器和以下代码:

FOR /R %%f in (*.imd) DO IF NOT EXIST "%%~pnf.7z" (
         7z a -mm=BROTLI -mx=2 -mmt24 "%%~pf%%~nf.7z" "%%f" 
   )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内容处理文件名不适用于IE

来自分类Dev

重命名文件夹中的文件名时,通配符不适用于重命名

来自分类Dev

仅当目标目录中不存在文件时,如何在无限运行的批处理文件中复制文件?

来自分类Dev

rsync-仅当某个文件不存在时才复制目录的内容

来自分类Dev

仅当文件不存在时,才在用户给定的路径中创建文件

来自分类Dev

Makefile-仅当文件不存在时才进行依赖

来自分类Dev

仅当Nginx不存在文件时,才将URL重定向到PHP

来自分类Dev

Makefile-仅当文件不存在时才进行依赖

来自分类Dev

当且仅当文件被调用且不存在时,才触发CMake自定义命令

来自分类Dev

Java注释处理器:仅在不存在时才生成源文件

来自分类Dev

仅当不存在与活动线程相同的线程名称时才创建线程(Python)

来自分类Dev

仅当队列中不存在项目时才将其添加到队列中

来自分类Dev

仅当表 B 中不存在特定值时才从表 A 中获取值

来自分类Dev

仅当值不存在时才从SELECT插入表中

来自分类Dev

仅当列中不存在值时才尝试执行SQL命令

来自分类Dev

仅当使用MySQL的值不存在时才如何从表中插入值?

来自分类Dev

仅当一个表中的数据不存在时才将其插入

来自分类Dev

仅当表中不存在该值时才更新SQL列

来自分类Dev

仅当特定列中不存在值时才更新表

来自分类Dev

仅当 oracle sql 中不存在值时才插入

来自分类Dev

为什么当文件存在时for循环中的`zip`起作用,而当文件不存在时为什么不起作用?

来自分类Dev

为什么当文件存在时for循环中的`zip`起作用,而当文件不存在时为什么不起作用?

来自分类Dev

为什么当文件存在时for循环中的zip起作用,而当文件不存在时为什么不起作用?

来自分类Dev

仅当目标文件较小或不存在时才用于将文件从源复制到目标的Windows脚本

来自分类Dev

批处理文件中的“如果不存在”命令

来自分类Dev

批处理文件中的“如果不存在”命令

来自分类Dev

RewriteRule小写转换仅适用于文件名

来自分类Dev

文件存在不适用于 laravel 中的文件

来自分类Dev

适用于Mac的Android Studio 2.3:gradle同步失败,打开zip文件时出错

Related 相关文章

  1. 1

    内容处理文件名不适用于IE

  2. 2

    重命名文件夹中的文件名时,通配符不适用于重命名

  3. 3

    仅当目标目录中不存在文件时,如何在无限运行的批处理文件中复制文件?

  4. 4

    rsync-仅当某个文件不存在时才复制目录的内容

  5. 5

    仅当文件不存在时,才在用户给定的路径中创建文件

  6. 6

    Makefile-仅当文件不存在时才进行依赖

  7. 7

    仅当Nginx不存在文件时,才将URL重定向到PHP

  8. 8

    Makefile-仅当文件不存在时才进行依赖

  9. 9

    当且仅当文件被调用且不存在时,才触发CMake自定义命令

  10. 10

    Java注释处理器:仅在不存在时才生成源文件

  11. 11

    仅当不存在与活动线程相同的线程名称时才创建线程(Python)

  12. 12

    仅当队列中不存在项目时才将其添加到队列中

  13. 13

    仅当表 B 中不存在特定值时才从表 A 中获取值

  14. 14

    仅当值不存在时才从SELECT插入表中

  15. 15

    仅当列中不存在值时才尝试执行SQL命令

  16. 16

    仅当使用MySQL的值不存在时才如何从表中插入值?

  17. 17

    仅当一个表中的数据不存在时才将其插入

  18. 18

    仅当表中不存在该值时才更新SQL列

  19. 19

    仅当特定列中不存在值时才更新表

  20. 20

    仅当 oracle sql 中不存在值时才插入

  21. 21

    为什么当文件存在时for循环中的`zip`起作用,而当文件不存在时为什么不起作用?

  22. 22

    为什么当文件存在时for循环中的`zip`起作用,而当文件不存在时为什么不起作用?

  23. 23

    为什么当文件存在时for循环中的zip起作用,而当文件不存在时为什么不起作用?

  24. 24

    仅当目标文件较小或不存在时才用于将文件从源复制到目标的Windows脚本

  25. 25

    批处理文件中的“如果不存在”命令

  26. 26

    批处理文件中的“如果不存在”命令

  27. 27

    RewriteRule小写转换仅适用于文件名

  28. 28

    文件存在不适用于 laravel 中的文件

  29. 29

    适用于Mac的Android Studio 2.3:gradle同步失败,打开zip文件时出错

热门标签

归档