• ベストアンサー

DOSコマンドについて質問させてください。

Dir02~Dir07の中に*.zipファイルが存在します。 *zipファイルの有無を検索して、*.zipファイルがあれば[Dir01]の中にその*.zipファイルを移動するバッチファイルはどのように書けばいいでしょうか? Dir01からバッチファイルを実行するようにしたいです。 [Dir01]-[Dir02]     -[Dir03]     -[Dir04]     -[Dir05]     -[Dir06]     -[Dir07] 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • umamimi
  • ベストアンサー率39% (144/362)
回答No.7

No.5,6 です。 No.6お礼欄 >この方法だと最初の1つのフォルダの中のZIPファイルだけ移動できました。 >ただ、ほかのフォルダの中のZIPファイルは移動しません。 変ですね。デスクトップでも確認できましたが... >デスクトップ上に日本語のフォルダ名にしているのが問題なのでしょうか。。。 特に問題ないと思いますが。 展開される時に文字数がかなり長いとかではないですよね。 フォルダ名やファイル名にスペースを含み、それが move コマンド以下に現れるようだと うまくないので、"" で括る必要があります。 これでいいと思います。 for /d %%a in (*.*) do move "%%a\*.zip" 何のエラーが出てるか確認するには、バッチファイルの最後の行に pause を追加してDOS窓を閉じる前に止めさせ、画面表示を読むといいです。 以下はその表示例(成功の場合)です。 >C:\Documents and Settings\Administrator\デスクトップ\sub1>for / %a in (*.*) do m >ove "%a\*.zip" > >C:\Documents and Settings\Administrator\デスクトップ\sub1>move "sub2\*.zip" >C:\Documents and Settings\Administrator\デスクトップ\sub1\sub2\txt2.zip > >C:\Documents and Settings\Administrator\デスクトップ\sub1>move "sub3\*.zip" >C:\Documents and Settings\Administrator\デスクトップ\sub1\sub3\txt3.zip > >C:\Documents and Settings\Administrator\デスクトップ\sub1>move "sub4\*.zip" >C:\Documents and Settings\Administrator\デスクトップ\sub1\sub4\txt4.zip > >C:\Documents and Settings\Administrator\デスクトップ\sub1>pause >続行するには何かキーを押してください . . . >この方法が無難なのでしょうか? for コマンドなど使う時は展開される内容を推測しますが時々「読み間違える」 (想像が足りない)場合があり、テストやデバグが必要になってきたりしますので。 そういうのが手間だとか時間かけてられないとかなら、エクセルのオートフィルを利用するなどして コマンド数が増えようが間違えにくい方法を取る方がよい、という見方もアリだと思います。

megumi19910715
質問者

お礼

大成功です!ありがとうございました。 ベストアンサーにさせて頂きました。 本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • umamimi
  • ベストアンサー率39% (144/362)
回答No.6

ご存知かと思いますが念の為。 No.3 の記述は、コマンドプロンプトで使うならそのままでOKですが、 バッチファイル内に記述して使うなら %a は %%a と書いてください。 バッチファイルを実行する時は %% が % に置換されるので % を 2個続けて書いておく必要があります。

megumi19910715
質問者

お礼

この方法だと最初の1つのフォルダの中のZIPファイルだけ移動できました。 ただ、ほかのフォルダの中のZIPファイルは移動しません。 for /d %%a in (*.*) do move %%a\*.zip よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • umamimi
  • ベストアンサー率39% (144/362)
回答No.5

>どのようにすればフォルダを1つずつ書くこと無く for 文で /d と (*.*)を使うとフォルダのみを拾えます。 カレントフォルダを \Dir01 にして for /d %a in (*.*) do move %a\*.zip でOKです。 上書き確認は "/-y"を追加し、以下のように。 for /d %a in (*.*) do move /-y %a\*.zip 動作確認済み。

megumi19910715
質問者

お礼

なぜか動きません。 デスクトップ上に日本語のフォルダ名にしているのが問題なのでしょうか。。。 とりあえず、エクセルで001で記載したものをドラッグして1000個作ってバッチファイルを動かすと問題なく全部移動することができました。 この方法が無難なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.4

そうですね。 では move *\*.zip ./ どうでしょう

megumi19910715
質問者

お礼

ありがとうございます。 この方法でバッチファイルは動きませんでした。 今のところ下記のように記載すれば意図するように動きます。 move Dir002\*.zip . move Dir003\*.zip . move Dir004\*.zip . 恐れ入ります、どのようにすればフォルダを1つずつ書くこと無くバッチファイルを動かすことができるのでしょうか。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • okgoripon
  • ベストアンサー率44% (1141/2550)
回答No.3

余計なお世話かもしれませんが、一応。 「Dir01からバッチファイルを実行」して「[Dir01]の中にその*.zipファイルを移動」するということですが、ANo.1の方のコマンドでは移動先が「Dir01の1つ上のディレクトリ」になってしまいます。 例えば、C:\Dir00\Dir01に質問のディレクトリ構造を作って実行したとすると、ANo.1の場合の移動先はC:\Dir00、私の場合はC:\Dir00\Dir01です。 念のため。

全文を見る
すると、全ての回答が全文表示されます。
  • okgoripon
  • ベストアンサー率44% (1141/2550)
回答No.2

いや、単に move Dir02\*.zip . move Dir03\*.zip . move Dir04\*.zip . move Dir05\*.zip . move Dir06\*.zip . move Dir07\*.zip . でいいのでは? 途中zipファイルの含まれないフォルダではエラーが表示されますが、目的は達成できるはずです。 ただし、同名のzipファイルが複数のフォルダに含まれていた場合、そのまま移動されるのは最初の1つだけで、2つ目以降は上書き確認のメッセージが表示されて一旦止まります。 質問にはその条件が記載されていなかったので、問題無いと判断しましたが。

megumi19910715
質問者

お礼

早速の返信ありがとうございました! すみません、それでフォルダーが1000個ほどあるので、1つ1つ記載するのが大変なのですが、その場合どのようにバッチファイルをつくればいいでしょうか? 恐れ入りますがよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

move Dir02\*.zip ../ move Dir03\*.zip ../ move Dir04\*.zip ../ move Dir05\*.zip ../ move Dir06\*.zip ../ move Dir07\*.zip ../ でいいかな

megumi19910715
質問者

お礼

早速の返信ありがとうございました! すみません、それでフォルダーが1000個ほどあるので、1つ1つ記載するのが大変なのですが、その場合どのようにバッチファイルをつくればいいでしょうか? 恐れ入りますがよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • UnzipするDosコマンド

    Ftpサーバーに置いてあるZipファイル(毎週更新される)を解凍し 解凍されたファイルをローカルにコピーするようなバッチを 作りたいのですが、Zipファイルを解凍する段階でつまづいています。。 Zipを解凍するコマンドというのはあるのでしょうか? バッチファイルというものに初めて取り組み わからないことだらけなのですが、よろしくお願いします。

  • DOSコマンド

    テキストファイル内にある指定された文字列を、指定した文字に置き換えできる DOSコマンドはありませんか? バッチ形式で、検索文字列、置き換え文字列が指定できるのが希望です。 例:テキストファイル内 C:\Documents and Settings\○○ バッチ実行後↓ C:\Documents and Settings\×× ○○を検索して××に置き換えしなさい といった感じです。

  • コマンドプロンプトによるフォルダ内のファイル存在有無

    バッチ処理で、特定のフォルダ内(配下にフォルダとファイルが混在している)でファイルだけの存在有無を調べて、ファイルが存在している場合とファイルが存在していない場合で処理を別々に行わせようとしたいのですが、ファイルの存在有無はどのようにコマンドで調べれば良いでしょうか? DIR C:\test\*.* でファイルを調べて、ERRORLEVELでif判定させようと思っているのですが、 DIRコマンドでこれを行うと、フォルダまで表示されます。 どのようにしたら良いのでしょうか?教えてください。

  • DOSコマンドについて

    DOSコマンドで下記の2つを実現したくて色々と 調べてみたのですがわかりませんでした。 (1)バッチファイルを実行したら、DOSプロンプトの  画面が立ち上がり、検索したい文字を入力できる  状態にする。 (2) (1)で入力された文字列が2文字以上だった場合は  エラーメッセージを表示し、再度入力させる。 (3)(1)で入力した文字列を任意のファイル内で検索し、  あれば大文字⇒小文字に変換する。 echoとpromptというコマンドを使って入力画面を 表示させることができるのかと思いましたが なかなかうまくいかない状態でした。 何か参考になるサイトがあれば教えて頂ければ幸いです。

  • DOSでフォルダごと移動するには

    WindowsNT 4.0を使用しておりまして、 夜間に起動するバッチファイルを作成しております。 1つのフォルダの中に、数個のフォルダに分かれておりまして、1つが数GBあります。 人が使用していない時間帯に、移動をかけたいのですが、 --------------------------------------------- move C:\DIR1 C:\TEMP (DIR1をC:\TEMPフォルダに移動したい) --------------------------------------------- MOVEコマンドで、フォルダの移動を試みたのですが エラーになり、正常に処理してくれません。 自分のクライアント(WindowsXP)では、 問題なく、移動できたのですが NTのDOSコマンドでは、ダメなのでしょうか?? ちなみに、フォルダ以下にあるファイルに対して 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に空白までのファイル名が挿入されていることが原因だと思います。 コマンドで検索されたファイルを""で括るようなことができれば解決できると思っていますが、そのようなことができるのか知っている方がおりましたら教えていただけないでしょうか? よろしくお願いいたします。 以上

  • DOSのコマンドがわかりません

    Windows(95,98,NT,2000)上で作動するバッチファイルを作っています。 そこで、ユーザに、本当に処理を実行して良いか(y/n)で判断させるようなロジックにしたいのですが、判定させるコマンドがわかりません。 CHOICEコマンドも使ってみたのですが、CHOICEコマンドを実行させるためのCHOICE.comは、NT,2000には標準で無いらしいのです。 何か95,98,NT,2000に共通のコマンドがありましたら、教えて下さい!

  • DOSコマンド実行できず!

    win98 → win2000 にUpgradeしたところ DOSコマンドの一部が実行できません。 ping、ipconfig 実行ファイルがないのが原因なのでしょうが、 入手元、入手後どこのdirに入れればよいか ご存知の方教えてください!

  • ShellExecuteでDOSコマンド実行したら...

    VC++6.0においてShellExecuteでDOS窓をたち上げてコマンドを 実行したいのですが、うまくいきません。 1.ShellExecute(m_hWnd,"open","command.com","dir",NULL,SW_SHOW); ...とすると”指定された COMMAND 検索ディレクトリが違います.”となり、 なにも実行されません。 2.ShellExecute(m_hWnd,"open","command.com","dir /?",NULL,SW_SHOW); ...とするとちゃんとdirのヘルプが表示されますが、すぐに窓が閉じます。 3.ShellExecute(m_hWnd,"open","command.com","dir /? > out.txt",NULL,SW_SHOW); ...としてもファイルが作られず、2.と全く同じ結果になってしまいます。 これはどうしてこのような現象が起きるのでしょうか? DOSプロンプトをたち上げて同様なコマンドを実行した場合はちゃんと期待通りの結果が得られます。 あと、DOS窓が閉じないようにするにはどうすればいいのでしょうか?

  • notepad++の実行について

    今日は! Dirの変更について質問いたします。 Q1)notePad++のLight_Exploreのなかで、フォルダが表示されていますが  このホルダーをカレントDirに設定する方法はありますか?  注)フォルダをクリックしましたが、このフォルダ以外のDirがカレントDirになっております。 Q2)実行ICONをクリックしまして、『ファイル名を指定して実行』からバッチファイル  (例えば、AAA.bat)を指定し、その後AAA.batを実行しますか、機能しません。  バッチファイルの実行は出来ないのでしょうか。  注)consoleからは、このバッチファイルの実行はできます。 以上、宜しくお願いします。

専門家に質問してみよう