0

batファイルを 1 つの場所から 1 つのバックアップ フォルダーに移動する1 つのファイルを作成したいと考えています。条件は、親ディレクトリ内で 30 日以上経過したすべてのフォルダーを移動する必要があることです。フォルダ名はフォルダの作成日です。

例: 2012 年 10 月 17 日のすべてのファイルは、10172012 という名前のフォルダー内にあります。ソース フォルダーは次のとおりです。

C:\Data\DataIn\Processed\10172012

C:\Data\DataIn\Processed\09172012

C:\Data\DataIn\Processed\08172012

したがって、今日のバットファイルは、フォルダー「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

シェルスクリプトを使用すると、より簡単に実行できます。最後に、シェルスクリプトを使用してこれを実装しました。

于 2012-12-12T08:36:34.523 に答える