如何使用WinRAR创建一个ZIP文件,其ZIP文件名是当前文件夹的名称?

时间:2016-09-14 18:33:02

标签: windows batch-file

我试图制作一个.bat文件,用于压缩选择文件,文件名自动匹配当前文件夹名称和自定义扩展名。

例如,在目录C:\thisIsAFolder\

Winrar a -afzip %thisIsAFolder%.PicZip *.jpg *.png *.gif

我正在尝试使用%CD%,但它不起作用,可能是因为最后有一个终结符?

这是较大批处理文件的一小部分,但它是唯一不起作用的部分。

我愿意接受使用批处理文件的替代方法。

1 个答案:

答案 0 :(得分:0)

此批处理代码可用于此任务:

@echo off
if not "%CD:~-1%" == "\" (
    for /F %%I in ("%CD%") do set "FolderName=%%~nxI"
) else (
    set "FolderName=Drive%CD:~0,1%"
)
"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -cfg- -ibck -m0 -y "%FolderName%.PicZip" *.jpg *.png *.gif
set FolderName=

注意:根据 WinRAR 的安装情况,您机器上WinRAR.exe的路径可能会有所不同。

环境变量CD包含当前目录的路径。此路径不以反斜杠结尾,但当前目录是驱动器的根目录。

IF 条件将当前目录路径的最后一个字符与反斜杠进行比较。最后一个字符不是反斜杠,命令 FOR 用于从整个目录路径获取最后一个反斜杠后面的字符串,这是当前目录的名称。否则,当前目录是驱动器的根目录,文件夹的名称定义为Drive,并附加驱动器号。

ZIP文件是使用压缩方法store创建的,因为切换-m0为* .jpg,* .png和* .gif文件包含已经压缩的数据,因此重新压缩不会很有道理。

有关 WinRAR 中打开的开关的解释,请从菜单帮助 帮助主题。在标签目录打开列表项命令行模式和子项切换。打开帮助页面按字母顺序切换列表并阅读有关切换的信息。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • echo /?
  • if /?
  • for /?
  • set /?