2016-09-14 106 views
2

我想制作一个.bat文件,该文件将使用自动匹配当前文件夹名称和自定义扩展名的文件名压缩选择的文件。如何用WinRAR创建一个ZIP文件名称为当前文件夹的名称的ZIP文件?

例如,目录C:\thisIsAFolder\

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

我试图用%CD%,但它不工作,可能内由于在年底终止?

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

我打开使用批处理文件的替代方案。

+0

认沽'呼应on'只是问题的线之上,看看它输出。这个命令看起来正确吗? –

+0

打算假设您正在尝试将父目录名称获取到变量中。 (for %% a in(“%〜dp0 \ ..”)do set parent = %%〜nxa' – Squashman

+0

Ryan,感谢回显建议,问题是包含完整的路径名; C:/等。 – Frodofeet

回答

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.exe路径可以根据安装WinRAR的你的机器上的不同。

环境变量CD保存到当前目录的路径。除了当前目录是驱动器的根目录之外,此路径不会以反斜杠结尾。

IF条件比较当前目录路径的最后一个字符和反斜杠。如果最后一个字符不是反斜杠,则使用命令FOR从整个目录路径获取最后一个反斜杠(即当前目录的名称)之后的字符串。否则,当前目录是驱动器的根目录,并且文件夹的名称被定义为Drive并附有驱动器号。

ZIP文件是由压缩方法store创建的,因为开关-m0为* .jpg,* .png和* .gif文件包含已压缩的数据,因此重新压缩没有太大意义。

对于交换机WinRAR的从菜单帮助帮助主题开放的解释。在标签内容打开清单项目命令行模式和子项目开关。打开帮助页面字母顺序开关列表并阅读有关开关。

为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • echo /?
  • if /?
  • for /?
  • set /?
相关问题