0

我想创建一个bat文件,将文件从一个位置移动到一个备份文件夹。条件是我需要在父目录中移动所有超过 30 天的文件夹。文件夹名称是文件夹的创建日期。

例如:2012 年 10 月 17 日的所有文件都将在名为 10172012 的文件夹内。源文件夹是:

C:\Data\DataIn\Processed\10172012

C:\Data\DataIn\Processed\09172012

C:\Data\DataIn\Processed\08172012

所以今天 bat 文件应该将文件夹“09172012”、“08172012”移动到目标备份文件夹:

D:\Backup\Processed\
4

2 回答 2

1
@echo off
setlocal EnableDelayedExpansion
rem Get Julian Day number of today's date
for /F "tokens=1-3 delims=/" %%a in ("%date%") do (
   set /A m=1%%a %% 100, d=1%%b %% 100, y=%%c
)
set /A A=(m-14)/12, todayJDN = (1461*(y+4800+A))/4 + (367*(m-2-12*A))/12 - (3*((y+4900+A)/100))/4 + d - 32075
rem Process all folders
for /D %%a in (*) do (
   rem Get Julian Day Number of this folder
   set folder=%%a
   set /A m=1!folder:~0,2! %% 100, d=1!folder:~2,2! %% 100, y=!folder:~4!
   set /A "A=(m-14)/12, folderJDN = (1461*(y+4800+A))/4 + (367*(m-2-12*A))/12 - (3*((y+4900+A)/100))/4 + d - 32075"
   rem Move folder if it is older than 30 days
   set /A daysOlder=todayJDN - folderJDN
   if !daysOlder! gtr 30 move %%a D:\Backup\Processed\
)

此处描述了儒略日数字:http ://www.hermetic.ch/cal_stud/jdn.htm

于 2012-11-06T19:39:56.100 回答
0

使用 shell 脚本更容易做到。最后,我使用 shell 脚本实现了这一点。

于 2012-12-12T08:36:34.523 回答