MS-DOSの環境で、以下のことを実施したいと考えています。OSはwin7でVersion 6.1.7601です。


あるドライブのcccにある、当日日付以外の「フォルダのみ」を同ディレクトリのoldに移動させたい。

一つ前のccc配下へ移動する場合は「for /D %%a in (*) do move %%a ..」で終わります。
文字列の判定であれば「MOVE /Y 20* old」にするとファイルも移動させてしまい、同一ディレクトリに
あるフォルダのみをoldに移動する方法が思いつきません。発想が乏しくすみません。一手ご教授ください。


条件:
OS:window7
言語:できればDOSコマンド、もしくはteraterm。

treeの状態
Z:.
├─aaa
├─bbb
├─ccc
│ ├─old
│ ├─20150301
│ │ ├─0301.log
│ │ └─0301.txt
│ ├─20150302
│ │ ├─0302.log
│ │ └─0302.txt
│ ├─20150303
│ ├─201503_xxx.txt
│ ├─2015_yyy.xls

この内、20150301、20150302、20150303のフォルダのみoldに移動させる。
日付フォルダ配下のtxtや、logも纏めて移動させる。

どうぞよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/03/31 17:10:05

ベストアンサー

id:vorfee No.2

回答回数5ベストアンサー獲得回数2

UNIXのコマンドですがどうでしょうか

find . ! -path . -type d ! -name $(date +%Y%m%d) -a ! -name old | xargs -I{} mv {} old

その他の回答1件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

  1. z:直下にテンポラリディレクトリを作る
  2. その中に一旦全部のディレクトリを移動
  3. oldと当日日付ディレクトリだけ元に再移動
  4. テンポラリディレクトリの中身全部をoldに移動

で、どうでしょう?

id:vw0920

返信遅くなりました。

やはり直接フォルダだけを移動させる方法はないでしょうか。
一応このパターンのbatchは稼働できました。
もっといい方法はあると思うのですが、もう少し悩んでみます。

2015/04/01 11:36:36
id:vorfee No.2

回答回数5ベストアンサー獲得回数2ここでベストアンサー

UNIXのコマンドですがどうでしょうか

find . ! -path . -type d ! -name $(date +%Y%m%d) -a ! -name old | xargs -I{} mv {} old
  • id:Sampo
    まずはXCOPYコマンドのオプションを眺めるところからですね。
    http://www.k-tanaka.net/cmd/xcopy.php

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません