使用批处理文件压缩时截断的文件名(7zip)

时间:2014-04-22 16:52:37

标签: batch-file cmd backup batch-processing 7zip

我遇到的问题与文件名中第一个空格被截断的文件名有关。

7z a -t7z "D:\IDRIVE\New backups\Program\full\6\File.7z" "D:\IDRIVE\New backups\Program\full\4\*.*" -mx9

以上是我使用的批次代码(实际上我使用的是日期而不是文件,但我想更改为原始名称)

File1.bak becomes file.7z

File2.bak becomes file.7z

如果文件夹中有两个文件,7zip将压缩

File1和File2,它成为名为file.7z的单个文件

我希望它分别压缩如下

File1 becomes File1.7z

File2 becomes Files2.7z

请给我你宝贵的建议

但是它会压缩文件并将其名称更改为压缩的日期和时间(这是我当时唯一的选择)。实际上我并不想改变它的原始名称。

使用此代码,文件夹中的两个文件将压缩为单个文件。我希望它们能够单独压缩

我想知道如何使它成为可能..我在批处理文件编程方面不是很好

1 个答案:

答案 0 :(得分:1)

您无法使用7z.exe实现预期,因为它在cmdline上的工作方式与zip和tar的工作方式相同,您需要提供存档名称,后跟要压缩的文件名。它没有像gui那样有效。

但您可以将以下行放在批处理文件中

7z.exe a -tzip "%~n.zip" "%1"

并调用批处理文件,如

batch_file filename.bak

它将产生filename.zip

如果必须对许多文件执行此操作,则可以按如下方式修改批处理文件

FOR %%I IN (*.bak) DO (7z a -tzip "%%~nI.zip" "%%I")

为此,你必须进入bak文件的floder,并运行它,它将创建.zip文件 我希望可以围绕这个解决方案尝试其他必要的修改