• ベストアンサー

Windowsで指定「以外」のファイルを移動したい

Dドライブ ├MyDocuments ├Userdata ├ファイルA ├ファイルB └ファイルC このようなフォルダ構成のドライブがあります。 このドライブ直下に「Dドライブのデータ」というフォルダを作成し その中にMyDocumentsとUserdataを除いた全てのファイルを「移動」したいと考えています。 対象の端末数が多いので、バッチか何かで自動化したいと考えているのですが 何か良い方法はありませんでしょうか? ・MOVEコマンドは除外の指定が出来ないので使えません。 ・XCOPY+DELは、ドライブの空き容量(D以外も含む)の関係で出来ません。 ・ユーザーによってファイルAがファイル1だったり、ファイルFまであったりするので 一つずつMOVEを書いたバッチを作るというのも難しいです。 コマンドプロンプト以外をよく知らないのですが、他の方法でも構いません。 よろしくお願いいたします。

noname#81969
noname#81969

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

WSHを使った方が楽ですがバッチで作るとこんな感じですかね… @ECHO OFF ' 移動元ディレクトリ SET SRC_DIR=D: ' 移動先ディレクトリの名前 SET DEST_DIR_NAME=Dドライブのデータ ' 移動先のディレクトリのフルパス SET DEST_DIR=D:\%DEST_DIR_NAME% REM ファイルを移動する FOR %%f IN ("%SRC_DIR%\*") DO MOVE "%%f" "%DEST_DIR%" REM ディレクトリを移動する FOR /D %%d IN ("%SRC_DIR%\*") DO ( REM 除外するディレクトリか調べるサブルーチンを調べる REM %%~ndは%%dのファイル名(ディレクトリ名) CALL :IS_EXCLUDE_DIR "%%~nd" REM 終了コードが1以上の場合はディレクトリを移動する IF NOT ERRORLEVEL 1 MOVE "%%d" "%DEST_DIR%" ) EXIT /B REM 除外するディレクトリか調べるサブルーチン :IS_EXCLUDE_DIR SETLOCAL FOR %%e IN ("My Documents" "Userdata" "%DEST_DIR_NAME%") DO ( REM 除外するディレクトリの場合、終了コードに1を返す IF /I %%e EQU %1 EXIT /B 1 ) ) ENDLOCAL EXIT /B 0

その他の回答 (4)

  • iriyak
  • ベストアンサー率48% (40/82)
回答No.5

こんにちは。 ANo.3 で紹介された UWSC でのプログラム例です。 (使用法) ・スクリプトを保存しておきます ・エクスプローラウインドウを開いて D:\ を開いておきます ・スクリプトを起動します (コメント) ★1 途中経過を都度表示しながらする場合 true を設定します ★2 エクスプローラウインドウのタイトルの一部もしくは全部を設定します (D:\ 直下ならこのままでOK) ★3 サンプルはコピー&ペーストですが、カット&ペーストする場合は VK_C → VK_X に変更します (スクリプト) const _debug = false // ★1 false → true (ダイアログ表示) public wid confirm("開始します...") wid = GETID("ボリューム (D:)", "CabinetWClass") // ★2 "ウインドウのタイトル" confirm("フォルダを作成します...") SCKEY(wid, VK_ALT, VK_F, VK_W, VK_F) SLEEP(0.1) SCKEY(wid, VK_ENTER) SLEEP(0.1) SCKEY(wid, VK_APPS, VK_M) SLEEP(0.1) SENDSTR(wid, "Dドライブのデータ") SLEEP(0.1) SCKEY(wid, VK_ENTER) SLEEP(0.1) confirm("未選択の状態にします...") SCKEY(wid, VK_CTRL, VK_A) SLEEP(0.1) SCKEY(wid, VK_ALT, VK_E, VK_I) SLEEP(0.1) confirm("コピー対象を選択します...") KBD(VK_CTRL, DOWN) SLEEP(0.1) CLKITEM(wid, "MyDocuments", CLK_MUSMOVE, false) SLEEP(0.1) KBD(VK_CTRL, UP) SLEEP(0.1) KBD(VK_CTRL, DOWN) SLEEP(0.1) CLKITEM(wid, "Userdata", CLK_MUSMOVE, false) SLEEP(0.1) KBD(VK_CTRL, UP) SLEEP(0.1) KBD(VK_CTRL, DOWN) SLEEP(0.1) CLKITEM(wid, "Dドライブのデータ", CLK_MUSMOVE, false) SLEEP(0.1) KBD(VK_CTRL, UP) SLEEP(0.1) SCKEY(wid, VK_ALT, VK_E, VK_I) SLEEP(0.1) SCKEY(wid, VK_CTRL, VK_C) // ★3 VK_C → VK_X (移動の場合) SLEEP(0.1) confirm("コピーします...") CLKITEM(wid, "Dドライブのデータ", CLK_LEFTCLK) SLEEP(0.1) SCKEY(wid, VK_APPS, VK_P) SLEEP(0.1) confirm("終了しました (Exiting...)") procedure debugOut(s, indent = 0)   if _debug then print FORMAT(" ", indent * 4) + s fend procedure confirm(s)   if _debug then MSGBOX(s) fend

  • celtis
  • ベストアンサー率70% (2266/3204)
回答No.3

UWSCなどのマクロソフトで操作を記録し、それを各端末で実行させてみてはどうでしょうか? chie65536さんがおっしゃっている「選択の切り換え」を記録させれば、ファイル名が異なるような環境でも動作すると思います。 http://www.vector.co.jp/magazine/softnews/060627/n0606273.html

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

もう1つ方法が。 d: cd \ md Dドライブのデータ for %f in (*.*) do move d:\%f d:\Dドライブのデータ と書いたバッチファイルを動かせば「D:\にあるファイルが全部」移動されます。 for コマンドは「フォルダは無視する」ので、MyDocumentsとUserdataは移動されません。つまり「MyDocumentsとUserdataを除いた全てのファイル」が移動されます。 なお「それ以外のフォルダ」も無視されるので、D:\は「フォルダだけ存在する状態」になります。

noname#81969
質問者

補足

すみません、書き間違えていました。 「Dドライブのデータ」に移動させたいのは MyDocumentsとUserdataを除いた全てのファイル「とフォルダ」でした… でもこの方法は良さげですね。 これに加えてフォルダも移動できればいいのですが…

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

エクスプローラーで手動で移動するのが一番早いと思います。 MyDocumentsをクリックし、Ctrlキーを押しながらUserdataもクリック。 MyDocumentsとUserdataの両方が選択状態になったら、「編集」「選択の切り換え」で、MyDocumentsとUserdataの「2つ以外」を選択状態にする。 あとはドラッグして移動するだけ。

noname#81969
質問者

お礼

手動でやるのは最終手段のつもりだったのですが「選択の切り替え」は盲点でした! 少し賢くなりました。ありがとうございます。

関連するQ&A

  • Windows コピーコマンドについて

    Dドライブ直下に、Aフォルダがあり、そのAフォルダ配下には、複数のフォルダ/ファイルがあるとします。 このDドライブ直下のAフォルダを、右クリックして<コピー>し、Dドライブ直下で<貼り付け>を行うと、Dドライブ直下に、Aフォルダのバックアップが作成されると思います。(Aフォルダ配下のフォルダ/ファイル全て) これを、Windows のコマンド(コマンドプロンプト)で実行する場合、どのようなコマンドになるでしょうか。 属性など全ての情報もコピー/貼り付けする場合、コマンドに何かオプションは必要となるでしょうか。 宜しくお願いします。

  • バッチファイルにて指定フォルダごとコピーする方法

    バッチファイル初心者の為ご教授をお願いします。 Cドライブ直下に下記のようなフォルダがあります。 (それぞれのフォルダ内には沢山のフォルダやファイルが保存されています) 0001_2016_04_29 0001_2016_06_29 0001_2016_07_14 0002_2016_06_29 0002_2016_07_14 0002_2016_07_25 これをFドライブ(USBHDD)へフォルダ毎コピーしたいと思います。 XCOPYもしくはROBOCOPYでワイルドカードを使用しコピー出来ないでしょうか? Fドライブへは差分で保存し続けたいのでミラーは使用出来ません。 自分なりにしらべて下記のように記述してみたのですがうまくいきませんでした。 for /D %%A in (C:\0001*) do xcopy %%A /e F:\.

  • Batファイルでxcopyを実行するとループする

    BatファイルでCドライブのaaaフォルダからDドライブのaaaフォルダへファイルをコピーするxcopyの記述をしました。 xcopy c:\aaa d:\aaa /i 作成したBatファイルを実行するとループしてるのか、このコマンドが何度も繰り返され、コマンドプロンプトの×ボタンを押すまで終わりません。 コマンドプロンプトから直接xcopyを入力すると問題なくコピーされます。 どこか私の記述が間違っているのでしょうか?

  • 複数フォルダをまとめて移動するバッチプログラムを教えて下さい。

    複数フォルダをまとめて移動するバッチプログラムを教えて下さい。 Cドライブの直下に「ABC」というフォルダがあります。 その中に複数のフォルダがあり、それぞれのフォルダ内にCSVファイルが保存されています。 その複数のフォルダと中身のCSVファイルまるごと、Eドライブの「XYX」というフォルダに移動するバッチプログラムを作りたいのですが、うまくいきません。できればMOVEコマンドを利用したいです。

  • exclude xcopy 除外フォルダ指定の方法

    どうしてもわからない事があり、ご質問させて頂きます。 コマンドプロンプトの xcopy を使用して外付けHDD上のファイル(フォルダ含む)のバックアップを行ないたいのですが、外付けHDD内にある「ごみ箱」フォルダを除外したいのですが、その方法が分かりません。 「ごみ箱」フォルダは、外付けHDDの機能で用意されているものなのですが 中身が30万ファイル程あり、フォルダの中身を削除するのにとても時間がかかりそうなので、excludeを用いて除外しようと思いました。 ------------------------- xcopy Z:\ Q:\ /EXCLUDE:Z:\hogehoge\xcopy-excludelist.txt /D /S /E /H /C /Y /R ------------------------- で、除外指定ファイル(xcopy-excludelist.txt)の中身は、 ------------------------- ごみ箱/** ------------------------- としてみたのですが、「ゴミ箱」フォルダ毎コピーし始めてしまいます。 ご教授いただければと思います。 宜しくお願い致します。

  • ファイルをフォルダに自動振り分け バッチファイル

    Cドライブ直下の"A"フォルダにある1,000件のCSVファイルをCドライブ直下に作成した5つのフォルダ"1~5"に自動振り分けしたいと思っています。 振り分け条件はExcelで管理しており、CSVのファイル名(1,000件分)と振り分け先のフォルダ名(1,000件それぞれ1~5のフォルダ)を入力してあります。 バッチファイルでMOVEを利用して自動振り分けできないか…と考えていますが、上手く行きません。 どなたか教えていただけないでしょうか。宜しくお願いします。

  • moveでCドラからDドラに移動させられない

    バッチファイル(というかdosコマンド)について質問です。 OSはWindows 10 home 32bitです。 batファイルを作りました。 中身は以下の一行のみです。 move /y "%1" "D:\★ゴミ箱" このバッチファイルをデスクトップに置いています。このバッチファイルに移動したいファイルまたはフォルダをドラッグして、「★ゴミ箱」というフォルダに移動させたいのですが、なぜか移動してくれません。 いろいろ試してみたら、以下のことに気づきました。  ・cドライブにあるフォルダやファイルをドラッグした時には、   なぜか移動してくれません。  ・dドライブにあるフォルダやファイルをドラッグしたときには、   ちゃんと移動してくれます。 なんで、cドライブにファイルやフォルダがあるときは移動してくれないのでしょう? ちなみに、cドライブはeMMCで、dドライブはUSBメモリです。

  • バッチファイルでMDBを終了したい。

    いつもお世話になっています。 今回はあるmdbファイルをバッチファイルを使って終了させたいのです。 例えば、Dドライブ直下に123.MDBというファイルがあります。これを19:00に終了させたいのですがどうしたらいいのでしょうか?バッチファイルを作成できればタスクマネージャーを19:00に実行して終了させようかと思っています。MDBのタイマーイベントは別で使用している為、使えません。コマンドプロンプト等でなんとか・・・ ご理解いただけましたでしょうか? よろしくお願いします。

  • バッチファイルを利用したフォルダの一括削除

    バッチファイルを利用して特定のフォルダ内にあるすべての ファイル&フォルダを削除したいと思っています。 Dドライブ直下のファイルを削除するときは del "D:\*.*" これですべてのファイルは削除できるかと思います。 Dドライブ直下にフォルダがあった場合どのように削除したらよいのでしょうか? rmdirコマンドでは、フォルダごとに指定してやる必要がありますよね? ワイルドカードを使用してフォルダを削除する方法などあるのでしょうか? 特定フォルダそのものを削除してしまって、作り直したほうが早いかとも 思いましたが、アクセス権設定を再度しなければならなくなるので 何か良い方法はないでしょうか? ご存知の方いらっしゃいましたら、よろしくお願いいたします。

  • バッチファイルにて指定ファイルの移動について

    初心者の為バッチファイルの御教授お願いします。 D:\tempフォルダ直下に下記のようなファイルがあります。 000008000120160224180000MAIL.TXT 000008000120160225180000MAIL.TXT 000008000120160226180000MAIL.TXT 000008000120160227180000MAIL.TXT みていただくと分かると思いますが日付を含んだファイル名となっております。 このファイル名から日付を取得し、指定した日数より古い日付を持ったファイルをD:\temp\errフォルダへ移動したいと思っています。 例えば日数を1とするとD:\tempに下記のみが残るようにしたいと思っています。 000008000120160227180000MAIL.TXT 残りはD:\temp\errへ移動

専門家に質問してみよう