言葉のさんぽ道

~気ままに写真とゲームの話題が更新されるはず~

1週間前のファイルを定期バックアップする方法(DOSコマンド)

そんなのツール使ったり何なりすれば良いじゃない、と思うのだが仕事上必要になったのでメモするよ。
Linux環境ならRsyncとか使った実績はあるんだが、今回はWindows環境なのさ。
で、コピー自体はXCOPYコマンドで行うのだが、「1週間前」という指定に詰まった。
どうもDOSコマンド上で日付−7日とかできないらしい。マジか。
そんな訳で結局はvbscript上で取得することになる。
以下サンプル。

  • 定期バックアップを行うバッチ

cscript day.vbs
echo %ERRORLEVEL%
set D_DAY=%ERRORLEVEL:~-4,2%-%ERRORLEVEL:~-2,2%-%ERRORLEVEL:~-8,4%
echo %D_DAY%
xcopy A:\*.* B:\ /D:%D_DAY% (後は拡張子を適当に)

dim d_day
d_day = dateadd("d", -7, Date() )
WScript.Quit( year(d_day) * 10000 + month(d_day) * 100 + day(d_day) )

気をつけなきゃいけないポイントは、スクリプトの計算結果は%ERRORLEVEL%にしか入れられないっぽいこと。
よってその値は数値型でなければいけないこと。
XCOPYの日付指定は月-日-年の順ということ。欧米か!(欧米です)

しかしcscriptってどの環境でも実行できるのかな。VBのRuntimeがインストールされてないとダメとかないだろーな。
わからん。取り敢えず色々調査してみよう。