• ベストアンサー

バッチファイルのコマンドについて

Cドライブにフォルダ【TMP】があります。このフォルダには毎日、日付けの名称のフォルダ(ddmmyyyy)が一つ作成されます。C:\TMPにあるサブディレクトリを、Dドライブ【BAK】フォルダに移動するバッチファイルを作成したいのですが、どのようなコマンドを記述すればいいのでしょうか。 set dir1=c:\tmp\* set dir2=d:\bak move "%dir1%" "%dir2%" 上記では、tmpのファイルのみしか移動出来ません。また、d:\bakに移動したフォルダを定期的に削除したいのですが(作成後、一ヶ月以上経過したフォルダ)どのようにdelコマンドを記述すればいいでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

カレントディレクトリの配下に存在する”作成日の新しいディレクトリ30個以外”を消す場合 FOR /F "skip=30" %i IN ('dir /AD /TC /O-D /B') DO rmdir /S /Q %i という感じでいいと思います。 もし、「??の使い方が間違っています」と怒られるなら、 FOR /F "skip=30" %%i IN ('dir /AD /TC /O-D /B') DO rmdir /S /Q %%i で試して下さい。 なお、有無を言わさずに、ディレクトリを消すので、自己責任でお願いします。

fmis2004
質問者

お礼

アドバイス有難うございました。xcopy後に上記の方法を使用して当初の目的が実現しました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

for /D %f in(%dir1%) do move %f %dir2% でどうでしょう? 試してないので、なんですが。 フォルダ名で削除するバッチについては、最近そういうQ&Aがあったように思います。

fmis2004
質問者

補足

アドバイス有難うございます。forコマンドを試してみましたが〔dir1fの使い方が誤っています〕のMSGでした。そのままコピペしてみたのですが。削除バッチはQ&Aを検索してみます。

回答No.1

moveコマンドでなく、xcopyコマンドを使えば良いかと思います。 また、1ヶ月経過したディレクトリの削除ですが... リソースキットのforfilesなどを使わないと、期間経過の判定は難しいでしょう。 標準コマンドだと、特定個数以上のディレクトリを消すという位しか思いつきません。 (最新31個のディレクトリ以外を削除とかはできる) なお、ディレクトリの削除は、rmdirコマンドです。

fmis2004
質問者

補足

早速のアドバイス有難うございます。最新X個のディレクトリ以外を削除するという指定が出来るのですか。もしご存知であれば、そのコマンドも教えて頂けないでしょうか。宜しくお願いします。

関連するQ&A

専門家に質問してみよう