用于移动文件的Bat文件

时间:2012-11-06 13:48:30

标签: windows command-line batch-file

我想创建一个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\

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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