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

Windows 如何使用7za单独归档顶级子文件夹?,windows,batch-file,7zip,Windows,Batch File,7zip,我使用此批处理文件脚本将7zip应用于子文件夹: FOR /D %%i IN (*.*) DO 7za a -v1G -y -t7z -mx=3 "d:\backuptemp\tools\%%i.7za" "%%i\" 如果我在“tools”文件夹中运行此操作,它会备份“tools”中的所有子文件夹,并将它们作为7zip归档文件放在“backuptemp\tools”中 我想做的是能够从tools文件夹外运行此操作,但是当我使用以下代码时: FOR /D %%i IN (d:\tools\*.

我使用此批处理文件脚本将7zip应用于子文件夹:

FOR /D %%i IN (*.*) DO 7za a -v1G -y -t7z -mx=3 "d:\backuptemp\tools\%%i.7za" "%%i\"
如果我在“tools”文件夹中运行此操作,它会备份“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”文件夹之外使用此批处理文件,我需要更改哪些语法


另外,如果可能的话,我希望能够在文件名的末尾附加一个日期。假设我在“工具”中有一个名为“补丁”的文件夹,如何使其成为“补丁”\u 20140207.7za”?

此更改应有助于:

此代码的前四行将为您提供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\"

~nx起作用了。我能够在文件夹外运行批处理文件。我用我使用的日期戳代码在我的第一篇文章中添加了一条注释。我用日期例程更新了我的答案,以防你看到我的第一个提示。我可以通过在开头添加以下行来添加日期戳:Set TIMESTAMP=“eol=;tokens=1,2,3,4*delims=/,”For/F%TIMESTAMP%%I in('date/t'))请设置YYYYMMDD=%%l%%j%%k,以便您知道,此方法在不同的计算机和区域上不可靠,或者如果您更改区域设置,因为日期格式会更改。谢谢,我会记住这一点。