批处理文件仅压缩目录或子目录中的文件

批处理文件仅压缩目录或子目录中的文件

我想知道是否可以创建一个命令行来执行以下操作 - 如果目录存在,则仅将内容压缩到一个 ZIP 文件中。如果目录有子目录,则仅将内容压缩到另一个 ZIP 文件中。

例子:

C:\Directory\sample.txt ZIP only sample.txt
C:\Directory\Directory1\sample1.txt ZIP only sample1.txt
C:\Directory\Directory1\Directory2\sample2.txt ZIP only sample2.txt

因此它会在 C:\Directory 及其子目录中创建 3 个 zip 文件。

我不知道子目录的名称,因此我是否也可以分配某种变量来表示如果有目录或子目录,那么C:\Directory从 ZIP 上方启动?

谢谢你,

保罗

答案1

将其放入批处理文件中:

REM Usage: ZipFilesRecursively.bat "C:\My Files"
for /R "%~f1" %%F in (*) do 7z a "%%~dpFfiles.zip" "%%F"

它压缩全部且仅全部在目录及其所有子目录files.zip中创建要存档的文件。C:\My Files

答案2

如果您不知道目录列表,您可以使用命令循环遍历它们FOR

在 Windows 命令提示符中,键入FOR /?以获取有关其语法和用法的信息。

我可能会用它将您关心的所有文件复制到新子目录中,然后将其压缩。但是使用帮助文件,您应该能够弄清楚需要做什么。

答案3

这可能会帮助你:

Dir /A:D /B- 显示目录中的所有子目录

Dir /A:-D /B- 仅显示目录中包含的文件

结果Dir /A:D /B可用于检查目录是否包含子目录。

相关内容