- ベストアンサー
バッチファイルのコマンドについて
Cドライブにフォルダ【TMP】があります。このフォルダには毎日、日付けの名称のフォルダ(ddmmyyyy)が一つ作成されます。C:\TMPにあるサブディレクトリを、Dドライブ【BAK】フォルダに移動するバッチファイルを作成したいのですが、どのようなコマンドを記述すればいいのでしょうか。 set dir1=c:\tmp\* set dir2=d:\bak move "%dir1%" "%dir2%" 上記では、tmpのファイルのみしか移動出来ません。また、d:\bakに移動したフォルダを定期的に削除したいのですが(作成後、一ヶ月以上経過したフォルダ)どのようにdelコマンドを記述すればいいでしょうか。 宜しくお願いします。
- みんなの回答 (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 で試して下さい。 なお、有無を言わさずに、ディレクトリを消すので、自己責任でお願いします。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
for /D %f in(%dir1%) do move %f %dir2% でどうでしょう? 試してないので、なんですが。 フォルダ名で削除するバッチについては、最近そういうQ&Aがあったように思います。
補足
アドバイス有難うございます。forコマンドを試してみましたが〔dir1fの使い方が誤っています〕のMSGでした。そのままコピペしてみたのですが。削除バッチはQ&Aを検索してみます。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
moveコマンドでなく、xcopyコマンドを使えば良いかと思います。 また、1ヶ月経過したディレクトリの削除ですが... リソースキットのforfilesなどを使わないと、期間経過の判定は難しいでしょう。 標準コマンドだと、特定個数以上のディレクトリを消すという位しか思いつきません。 (最新31個のディレクトリ以外を削除とかはできる) なお、ディレクトリの削除は、rmdirコマンドです。
補足
早速のアドバイス有難うございます。最新X個のディレクトリ以外を削除するという指定が出来るのですか。もしご存知であれば、そのコマンドも教えて頂けないでしょうか。宜しくお願いします。
お礼
アドバイス有難うございました。xcopy後に上記の方法を使用して当初の目的が実現しました。