我需要使用 Windows 命令行和 WinRAR(或其他类似程序)在 Windows 7 上设置归档任务。我想创建一个执行此操作的脚本,但我之前没有经验。
我希望能够:
重新创建指定级别的文件夹子结构
将最后一级的每个子文件夹的内容归档到一个以该子文件夹名称命名的档案中
密码保护档案
将档案分割成指定大小的块
能够仅包含具有
A
(rchive) 属性的文件A
归档后清除(rchive) 属性可以通过在文本文件中指定来排除某些文件和文件夹。
任何帮助深表感谢。
我也准备好学习新的东西了,所以如果能给我指出一些可以帮助我完成这项任务的教程,我将非常感激。
编辑:
请考虑以下示例:假设我想存档名为 的文件夹的内容DOCS
,并重新创建其结构直至第 2 级(“DOCS”被视为第 0 级)。假设子文件夹的结构(直至第二级)如下:
DOCS\L1-A\L2-A\
DOCS\L1-A\L2-B\
DOCS\L1-A\L2-C\
DOCS\L1-B\L2-A\
DOCS\L1-B\L2-B\
DOCS\L1-B\L2-C\
我想要获得以下结构化备份(在不同的分区或驱动器上):
DOCS\L1-A\L2-A\L2-A.rar
DOCS\L1-A\L2-B\L2-B.rar
DOCS\L1-A\L2-C\L2-C.rar
DOCS\L1-B\L2-A\L2-A.rar
DOCS\L1-B\L2-B\L2-B.rar
DOCS\L1-B\L2-C\L2-C.rar
答案1
这适用于步骤 1 和 2;这将为镜像文件夹树结构中的每个 2 级文件夹创建一个名为“Level2Name.rar”的 rar 文件:
如果您想在 rar 文件中包含文件夹树结构(“Docs/Lv1/Lv2/Files”),只需从 winrar 命令中删除 -ep。
setlocal
set savelocation=D:\Backups
set path=%path%;C:\Program Files\WinRAR
for /F "eol= usebackq delims=" %%A IN (`dir "DOCS" /A:D /B`) do call :FL1 "%%A"
goto :eof
:FL1
pushd DOCS\%1
set level1="%~nx1"
for /F "eol= usebackq delims=" %%A IN (`dir * /A:D /B`) do call :FL2 "%%A"
goto :eof
:FL2
set level2="%~nx1"
POPD
if not exist "%savelocation%\DOCS\%level1%\%level2%" mkdir "%savelocation%\DOCS\%level1%\%level2%"
winrar a -ibck -inul -ep "%savelocation%\DOCS\%level1%\%level2%\%level2%.rar" "DOCS\%level1%\%level2%"
goto :eof
endlocal