如何使用7za单独存档顶级子文件夹?

时间:2014-07-02 18:06:50

标签: windows batch-file 7zip

我有这个批处理文件脚本将7zip应用于子文件夹:

FOR /D %%i IN (*.*) DO 7za a -v1G -y -t7z -mx=3 "d:\backuptemp\tools\%%i.7za" "%%i\"

如果我从“tools”文件夹中运行它,它会备份“工具”中的所有子文件夹,并将它们作为7zip存档放入“backuptemp \ tools”。

我想要做的是能够从tools文件夹外部运行它,但是当我使用以下代码时:

FOR /D %%i IN (d:\tools\*.*) DO 7za a -v1G -y -t7z -mx=3 "d:\backuptemp\tools\%%i.7za" "%%i\"

它尝试创建一个名为d:\ backuptemp \ d:\ tools \%nameoffolder%.7za的文件夹,并且无法说明文件名语法不正确。

我需要更改语法才能在“tools”文件夹之外使用此批处理文件?

另外,如果可能的话,我希望能够在文件名的末尾添加日期。假设我在“工具”中有一个名为“Patches”的文件夹,如何将其归档为“Patches_20140207.7za”?

1 个答案:

答案 0 :(得分:0)

此更改应有所帮助:

此代码的前四行将为您提供XP Pro及更高版本中可靠的YY DD MM YYYY HH Min Sec变量。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"


FOR /D %%i IN (d:\tools\*.*) DO 7za a -v1G -y -t7z -mx=3 "d:\backuptemp\tools\%%~nxi_%datestamp%.7za" "%%i\"