我正在尝试编写一个批处理脚本,该脚本将使用 winrar 或 7-zip 自动运行压缩子目录:
Example:
My Pictures
Pics1 (Pics1.zip)
File1.jpg
File2.jpg
File3.jpg
Pics2 (Pics2.zip)
File4.jpg
File5.jpg
Pics3 (Pics3.zip)
File6.jpg
File7.jpg
...
我如何编写脚本。
(1)使用WinRAR:
WinRAR
包括两个命令行工具,rar.exe and unrar.exe
,其中 rar.exe 压缩文件,unrar.exe 解压缩文件。
两者均位于C:\Program Files\WinRAR
可安装版本中的文件夹。
假设,如果下面有多个子文件夹C:\MyPictures
并且您希望每个子文件夹在父文件夹中都有自己的 .rar 文件。
从批处理文件中,这对您有用:
@echo off
setlocal
set zip="C:\Program Files\WinRAR\rar.exe" a -r -u -df
dir C:\MyPictures /ad /s /b > C:\MyPictures\folders.txt
for /f %%f in (C:\MyPictures\folders.txt) do if not exist C:\MyPictures\%%~nf.rar %zip% C:\MyPictures \%%~nf.rar %%f
endlocal
exit
解释....
它将创建父文件夹下所有文件夹/子文件夹的 .rar 文件
文件夹 C:\MyPictures 位于同一父文件夹中。
-
然后,它将删除父文件夹下的所有原始文件夹/子文件夹
文件夹 C:\MyPictures,因此您将只剩下档案
在同一个地方。
如果你想保留原来的子文件夹,只需删除-df switch
.
(2) 使用 7-Zip:
7-Zip
是一个高压缩比的文件归档器。7z.exe
是 7-Zip 的命令行版本。
7-Zip 不使用系统通配符解析器,也不遵循古老的规则.表示任何文件。 7-Zip 款待.匹配任何具有扩展名的文件的名称。
要处理所有文件,必须使用 * 通配符。
在批处理文件中使用 7zip 命令行选项,以下内容适合您:
@echo off
setlocal
for /d %%x in (C:\MyPictures\*.*) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"
endlocal
exit
Where
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)