谁能帮我创建一个批处理文件来解决我的问题。我有多个文件夹想要单独压缩。
根
- 文件夹 1
文件 1
文件 2- 文件夹 2
文件 1
文件 2
我需要先进入文件夹 1,然后压缩其所有内容(文件和文件夹,甚至其中的子目录),然后以该文件夹命名 zip 文件。之后,转到文件夹 2,然后执行相同操作。
有一个简单的脚本:
对于 (*) 中的 /d %%X,执行 "c:\Program Files\7-Zip\7z.exe" a "%%X" "%%X\"
但结果并不是我想要的。上面的脚本将单独压缩里面的所有文件夹,但解压后存档将有双文件夹。上面的代码将压缩文件夹 1。但当我解压文件夹 1 时它将如下所示:
根
文件夹 1
文件夹 1
文件 1
文件 2
难道不能像进入第一个文件夹一样,压缩其中的所有内容,用文件夹名称保存 zip 文件,然后转到下一个文件夹,直到压缩所有内容。
答案1
这取决于您用来提取的命令。
如果您选择“在此处提取”,您将得到您想要的内容。
但是,如果您确实不想要存档中的文件夹名称,您可以执行以下操作:
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X" ".\%%X\*"
注意.\%%X\*
。这将排除目录名称本身。