MSDOSコマンドでディレクトリ内をきれいにする方法とは?

このQ&Aのポイント
  • MSDOSコマンドを使用してディレクトリ内のファイルやサブディレクトリを移動および削除する方法について教えてください。
  • バッチファイルを使用して複数のコマンドを実行する場合も考慮してください。
  • del、move、rmdirコマンドなど単体では対応できない場合もありますので、代替策も教えていただけると幸いです。
回答を見る
  • ベストアンサー

MSDOSコマンドでディレクトリ内をきれいにしたい

DOSコマンドで複数のファイルとサブディレクトリをすべてどこかのディレクトリに移動するのと削除するにはどのようなコマンドになりますでしょうか? 複数行のバッチファイルにすることを想定しておりますので複数コマンドになってもOKです。 del,moveコマンドやrmdirだけでは対応できなそうなので、、、。 (1) C:\TEST\ C:\TEST\a.txt C:\TEST\b.txt C:\TEST\XXX\xxx.txt C:\TEST\YYY\yyy.txt を C:\TEST_NEW\ C:\TEST_NEW\a.txt C:\TEST_NEW\b.txt C:\TEST_NEW\XXX\xxx.txt C:\TEST_NEW\YYY\yyy.txt に移動したいのと (2) C:\TEST\ C:\TEST\a.txt C:\TEST\b.txt C:\TEST\XXX\xxx.txt C:\TEST\YYY\yyy.txt を C:TEST\ 内を空っぽにしたいです。 C:\TEST\ の中身は毎回変わり(上記a,b,XXX,YYY,xxx,yyyの名前が変わる)、(1)と(2)のバッチファイルを作って、ときどき C:TEST\をきれいにしたいです。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

MS-DOSはもう過去の物なので、「コマンドプロンプトで」とか「バッチファイルで」という質問ですよね? 簡単には、 (1) if exist C:\TEST_NEW rd /s /q C:\TEST_NEW move C:\TEST C:\TEST_NEW mkdir C:\TEST (2) rd /s /q C:\TEST mkdir C:\TEST 何かのプログラムが、C:\TEST をつかんでいるので、一時的にでもリネームや削除が出来ないということでしょうか?そういうことであれば、 (1) mkdir C:\TEST_NEW for %%A in (C:\TEST\*) do move "%%~A" C:\TEST_NEW\ for /d %%A in (C:\TEST\*) do move "%%~A" C:\TEST_NEW\ (2) for %%A in (C:\TEST\*) do del "%%~A" もしくは echo Y | del C:\TEST\* for /d %%A in (C:\TEST\*) do rd /s /q "%%~A" いずれもテストしてません。

qqandaa
質問者

お礼

notnotさん ご返信ありがとうございます。 後者のほうでやりたいことができそうだったのですが、何度かテストすると、移動先に、同じディレクトリ名があると、移動できずでした。 そこで教えていただいたサンプルを参考に、 for /d %%A in (C:\TEST\\*) do rmdir /S /Q "%%~A" を付け加えることでやりたいことができるようになりました。 大変助かりました。ありがとうございます。

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

MS-DOSのコマンドの数は少ないので一覧表から使いたいコマンドを選んでダミーを対象に操作してください。 http://www5f.biglobe.ne.jp/~emo/msdos.htm 使用例やオプションスウィッチについてはヘルプで確認されると良いでしょう。

qqandaa
質問者

補足

bunjiiさん ご返信ありがとうございました。 参考にさせていただきます。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.2

1)すいません。「移動」とあったので元は消すのかと。 元は残しておいてコピーするのであれば xcopy /D /E /I /Q /Y C:\TEST C:\TEST_NEW オプションはコマンドプロンプトでhelp xcopy で確認して必要なものを付けてください。 2)こっちはrmdirでディレクトリーもファイルも全て消えます。 rmdir /Q /S TEST\   をしてみてください。空の時に実行したらTESTが消えるので、 mkdir TEST      で作成できます。

qqandaa
質問者

補足

maiko0318さん ご返信ありがとうございます。 1)はおっしゃるとおり移動したいので、xcopyではやりたいことができません。 2)は私も考えたのですが、TEST\自体が消えてしまい、新たに作ることになりますが、一度消したくない(フォルダのアイコン場所が異なってしまうため)ためあきらめました。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

1)move TEST TEST_NEW 2)del /Q TEST\*.*   /Qは確認メッセージを表示しない

qqandaa
質問者

補足

maiko0318さん ありがとうございます。 1)これも試してみたのですが、これだとTEST_NEWの下にTESTが移動してしまい、かつTESTはなくなってしまいます。 2)これも試してみたのですが、a.txtやb.txtは消えますが、フォルダの中(xxx.txtやyyy.txt)は消えません。 希望としては、TESTとTEST_NEWはずっとそのままで中身だけ1)移動したり2)削除したいです。

関連するQ&A

  • linuxコマンド/複数のディレクトリに対して一括でファイルをコピー

    linuxコマンドについて質問です。 ある特定の1つのファイルを、複数のディレクトリに対して一括コピーはできなのでしょうか? root La Lb Lc -test.txt ↓実行後 root La-test.txt Lb-test.txt Lc-test.txt -test.txt root以下にあるファイル test.txt(root/test.txt)を root以下にあるディレクトリa,b,cにコピーしたいのです。 よろしくお願いいたします

  • バッチコマンドを作りたい

    MS-DOSでのバッチコマンドについての質問です。 パスを引数で指定して、そのパスのディレクトリ以下(サブディレクトリも含む)のファイル名を全て取得し、加工して表示するバッチを作りたいのですが・・。 例えばコマンド名を jcm をすると C:\>jcm C:\temp と入力すると(「C:\temp」は引数)、C:\temp以下(サブフォルダも含めて)にある全てのファイル名を取得し、ファイル名がA.txt,B.txtだったとすると java A.txt java B.txt のように加工して表示したのです。 バッチファイルの中身はどのように記述すればよいでしょうか?

  • ファイルアップローダ+複数のディレクトリを削除するシステムについて

    以下のようなフォルダ構成で、複数のディレクトリを削除するシステムを構築しよと しましたが、1ディレクトリのみしか削除できませんでした。 20090601 - xxx1.txt yyy1.txt zzz1.txt のフォルダ20090601と、ファイルxxx1.txt,yyy1.txt,zzz1.txt のみしか削除できませんでした。理想は、すべてのディレクトリ、ファイルを削除しようと、試行錯誤 しましたが、なかなかうまくいきません。 わかる人がいたら、ご教授のほどよろしくお願いします。 ============フォルダ構成==================================== 20090601 - xxx1.txt yyy1.txt zzz1.txt 20090602 - xxx2.txt yyy2.txt zzz2.txt 20090603 - xxx3.txt yyy3.txt zzz3.txt 20090604 - xxx4.txt yyy4.txt zzz4.txt $_WK_dir_name[1] = "20090601" $_WK_dir_name[2] = "20090602" $_WK_dir_name[3] = "20090603" $_WK_dir_name[4] = "20090604" ============プログラム====================================== // ファイルアップロード処理 (省略) // ディレクトリ数のカウント処理 (省略) // ディレクトリとディレクトリの中身を削除 for ($i = 1; $i < 4; $i++) { // 削除するディレクトリパスを設定 $_dir_path = './' . $_WK_dir_name[$i] . '/'; printf("★1"); // ディレクトリ・ハンドルをオープン $res_file = opendir( $_dir_path ); printf("★2"); // ディレクトリ内のファイル名を1つずつを取得 while( $file_name = readdir( $res_file ) ){ // ファイルかどうか判定する if (is_file($_dir_path . $file_name)) { unlink($_dir_path . $file_name); } } printf("★3"); closedir( $res_file ); printf("★4"); rewinddir( $res_file ); printf("★5"); // ディレクトリの中身が空になったところで、ディレクトリを削除する。 rmdir($_WK_dir_name[$i]); printf("★6"); } ============================================================

    • ベストアンサー
    • PHP
  • ディレクトリ移動コマンド

    バッチファイルを作成しています。ファイルの移動は(MOVE)コマンドで可能ですが、ディレクトリを移動させる場合、どのようにすればよろしいでしょうか。お願いします。

  • Windows環境にてforコマンドで空白を含むファイルを検索して、検

    Windows環境にてforコマンドで空白を含むファイルを検索して、検索結果を移動させるバッチを作成したいのですが検索結果に空白を含む場合、移動することができないので困っています。 例えば以下のような状況で実行した場合はどうすればうまく移動することができるのでしょうか? コマンド-------------------- for /f %%A in ('dir /b /s *.mp3') do move "%%A" d:/test カレントディレクトリ------------ AA.txt BB.txt C C.txt 実行結果 AA.txt-->移動 BB.txt-->移動 move "C" d:/test-->指定されたファイルが見つかりません。 おそらくdirコマンドでの検索されたファイルに空白が入っているときは%%Aに空白までのファイル名が挿入されていることが原因だと思います。 コマンドで検索されたファイルを""で括るようなことができれば解決できると思っていますが、そのようなことができるのか知っている方がおりましたら教えていただけないでしょうか? よろしくお願いいたします。 以上

  • バッチファイルで2行にわたるコマンドを入力したいのですが

    バッチファイルで複数行にわたるコマンドを打ちたいのですが、方法がわからなくて困っています。 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" "test%hinichi%01.txt" "test%hinichi%02.txt" ・・・・・・・ と31個のファイルを圧縮するバッチです。 体裁の問題ですが、 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" ? "test%hinichi%01.txt" ? "test%hinichi%02.txt" ・・・ としたいのですが各行のつなぎの記号?がわかりません。 ご存知の方、よろしくお願いいたします。

  • コマンドプロンプトで、ファイルを移動したい

    お世話になります。 コマンドプロンプトでa.txtをYYYフォルダに移動したいと考えております。 しかしながら、YYYフォルダは、存在するかわからない状態です。 YYYフォルダが存在すれば、YYYフォルダに移動、YYYフォルダが存在しなければ、YYYフォルダを新規作成して、その中に移動としたいのです。 下記、文をいれても当然実現できず困っています。 move C:\MyDir\a.txt C:\YYY お手数ですが、何卒よろしくお願いします。

  • ディレクトリ名をファイル名するバッチファイル

    ディレクトリ名を取得してその名称でフォルダを作るバッチファイルを考えています。 OSはWINDOWS XPです。 こういったディレクトリがあるとします。 111~444:名称が固定のディレクトリ bbb:名称が可変するディレクトリ mmm.bat、xxx.text:111フォルダと同じところにあるファイル 111┬222─bbb┬333─yyy.text    │        └zzz.text    │    └bbb┬333─yyy.text         └zzz.text mmm.bat xxx.text mmm.batを実行すると、111ディレクトリ以下のフォルダ名を取得し、 下記のようにフォルダを作成し、yyy.textの場所にbatファイルと同じ 所にあるxxx.textをコピーして差し替えるという動作をしたいのです。 (zzz.textは内容は違うが同じファイル名です) 444┬222─bbb┬333─xxx.text    │       └zzz.text    │    └bbb┬333─xxx.text        └zzz.text バッチコマンドで、ディレクトリ名を取得して空のフォルダを作る所までは 下記のようにできたのですが、 444┬222─bbb─333    │    └bbb─333 二つのzzz.textのコピー方法と、yyy.textの場所にxxx.textをコピーするにはbbbという可変するディレクトリを通らなければいけないのでその取得方法がわかりません。 分かる方は是非お教えください。 言葉が足りないところは補足もいたします。 よろしくお願いいたします。

  • MSDOSコマンドについて教えてください

    MSDOSコマンドについては初心者ですがすみません。 Windows2000のコマンドプロンプトで コマンドを使いたいのですが、 たとえば xcopy \\test-server\test\ c:\test\ /d /s /i /e /r というコマンドを使って 同じLAN上の「test-server」というPCの共有フォルダ「test」の中のファイルと、 このコマンドを実行するPCのCドライブの「test」フォルダの中身を同期させたい(同じ構成にしたい;ミラーリング)のですが、 WindowsNTのときは問題なくできたのですが Windows2000だと、ファイルを上書きするときに毎回、 「上書きしますがいいですか? Y/N」 というメッセージが出てきて、YかNかAをキーボードで打ち込まなければならず、強制的に自動実行できません。 すべてY(A)で、強制的に自動実行させたいのですが、コマンドをどのように書き換えたらよいでしょうか? また、今のコマンドだと上書きのみで、いらないファイルの削除(同期;ミラーリング)も同時に行いたいのですが、コマンドをどのように書き換えたらよいでしょうか? システム管理で必要なのですが、前任者が残していった設定を初心者ですが引き継がねばならず、困っています。DOSコマンドを1から勉強している余裕がなく、ぶしつけで申し訳ありませんが、必要なポイントだけ教えていただきたく、よろしくお願いいたします。

  • VBSでコマンドプロンプトのカレントディレクトリを操作できますか?

    どうにも行き詰まってしまったので質問させてください。 Windows2000なんですけど、コマンドプロンプトを開くと C:\Documents and Settings\Administrator> となっています。 cd c:\xxx\yyyと入力するとカレントディレクトリを変更することが出来ますが、VBSで同じようにしたい場合は、どのように書いたらいいのでしょうか?