【发布时间】:2018-09-16 14:18:25
【问题描述】:
我目前使用 robocopy 批处理脚本来制作目录的备份副本,下面的批处理脚本会创建一个文件夹,格式为当前脚本运行日期的 YYYYMMDD。
下面的脚本:
@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%"
robocopy "\\fsfiles\d$" "D:\Backups\Inc\%datestamp%" /S /W:0 /R:1 /MAXAGE:1 /A-:SH
然后我使用另一个批处理脚本在 31 天后删除备份。
下面的脚本:
@echo off
:: set folder path
set dump_path=D:\Backups\Inc
:: set min age of files and folders to delete
set max_days=31
:: remove files from %dump_path%
forfiles -p %dump_path% -m *.* -d -%max_days% -c "cmd /c del /q @path"
:: remove sub directories from %dump_path%
forfiles -p %dump_path% -d -%max_days% -c "cmd /c IF @isdir == TRUE rd /S /Q @path
虽然根据文件夹创建日期删除文件夹及其所有内容的脚本有效,但我想更改它以根据日期格式 YYYYMMDD 的文件夹名称删除文件夹及其所有内容,如果超过 31 天。
我怎样才能做到这一点?
【问题讨论】:
-
这在 PowerShell 中要容易得多。我建议切换。
标签: batch-file robocopy