我试图制作一个.bat
文件,用于压缩选择文件,文件名自动匹配当前文件夹名称和自定义扩展名。
例如,在目录C:\thisIsAFolder\
Winrar a -afzip %thisIsAFolder%.PicZip *.jpg *.png *.gif
我正在尝试使用%CD%
,但它不起作用,可能是因为最后有一个终结符?
这是较大批处理文件的一小部分,但它是唯一不起作用的部分。
我愿意接受使用批处理文件的替代方法。
答案 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 /?