• ベストアンサー

コマンドプロンプトでのディレクトリの設定

コマンドプロンプトで「cd /d」で対象ディレクトリを指定し、typeコマンドを使おうと思ったのですが、対象ディレクトリ一階層のみが検索対象になってしまいます。 対象ディレクトリより下層のフォルダをすべて検索対象にしたいのですが、どのような方法がございますでしょうか?

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

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.8

No.6 に例を示しているようにテキストファイルへ保存しましょう。 No.6 の例C:\の所をピリオドに直して使ってくださいね。

zyaba
質問者

お礼

お蔭さまでできました。 ありがとうございました。

その他の回答 (7)

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.7

>カレントディレクトリ直下に4つフォルダを用意しているのですが >表示されたファイルはその中の一つのフォルダ内のファイルのみでした。 表示されたフォルダ名をC:\の代わりに書いていませんか? カレントディレクトリ以下でよければ、ピリオド"."を書きましょう。 for /r . %F in (*.csv) do @echo === %F ===&type "%F"

zyaba
質問者

お礼

大変ありがとうございます! ご指摘の通り、c:¥の代わりに対象フォルダを記述していました! よくお解かりいただけたとただただ感心しております。 おかげさまで、教えていただいた方法でtypeすることができました。 ファイル内容のみならず、どのファイル名のものか分かるようにしたいため、 コマンドプロンプト上に表示されたtypeをコピペしたいと考えております。 しかし、プロンプト上には限られた行数しか表示されないことに気づきました。 ピックアップされた全てのデータを表示するにはどのようにしたらよろしいのでしょうか?

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.6

まず訂正です。テキストファイル保存は次のようにしてください。 (2つのコマンドを入力します) del list.txt for /r c:\ %F in (*.csv) do ( echo === %F ===&type "%F")>>list.txt お問い合わせのすぐに止まってしまうというのは、画面表示がされないということでしょうか? for /r f:¥abc¥ %F in (*.csv) do echo === %F === で出てくるCSVの数は100件ほどありますか?無ければそのフォルダ配下には出てきた数のファイルしか無いはずです。 ご確認下さい。

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.5

『Do @Type "%~f"』。。。?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 へのお礼で 「10件ほどcsvファイルを表示した後、すぐに止まってしまいました。 100件ほどファイルがあるのですが、すべてを表示するには何か特別な操作が必要なのでしょうか?」 ということですが, 「100件ほどファイルがある」というのはどう調べたのでしょうか? また, 「表示されたファイル」と「表示されないファイル」のそれぞれで, なにか共通することは思い当たりますか? for /F "delims=" %F in ('dir /s /b c:\abc\*.csv') do %F とかでできるか?

zyaba
質問者

お礼

ご教示いただいたコマンドだと、たくさんのエクセルファイルが開いてしまい大変でした。 大体100件くらいのcsvファイルを、ディレクトリに分けて保存しています。 カレントディレクトリ直下に4つフォルダを用意しているのですが、表示されたファイルはその中の一つのフォルダ内のファイルのみでした。ほかの3つのフォルダ内のcsvは表示されませんでした。

zyaba
質問者

補足

do type %F と書き換えて使用しましたが、先の現象と全く同じ結果となりました。 4つある下層フォルダのうち、一つの中しか対象としません。

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

この質問の続きですよね。 http://okwave.jp/qa/q6988632.html コマンドプロンプトで以下のようにすればCドライブ以下のすべての下層ディレクトリのCSVファイルを対象にファイル名と中身を表示できます。 for /r c:\ %F in (*.csv) do @echo === %F ===&type "%F" また以下でテキストファイル(list.txt)に保存できます。 for /r c:\ %F in (*.csv) do @echo === %F ===&type "%F">list.txt

zyaba
質問者

お礼

ありがとうございます! c:\の部分を f:\abc\ などと任意のディレクトリを指定し、その階層以下を対象とするよう書き換えて使用しています。 10件ほどcsvファイルを表示した後、すぐに止まってしまいました。 100件ほどファイルがあるのですが、すべてを表示するには何か特別な操作が必要なのでしょうか?

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

方法その1 | dir /s /b /a-d *.txt カレントフォルダの以下の(/s)、 拡張子が .txt(*.txt) の フォルダ以外のファイル(/a-d)の フルパス(/b)を表示する。 | For /f "tokens=* usebackq" %f in (`dir /s /b /a-d *.txt`) Do @Type "%~f" dir ... を実行した結果を一行ずづ(tokens=*) %f に設定して、Do 以下を実行する。 これだと、dir は一度しか実行されないけど、do 以下が、何度も実行されて遅いとおもう。 方法その2 | dir /s /b /ad . カレントフォルダの以下の(/s)、 フォルダ(/ad)の フルパス(/b)を表示する。 | Type "%CD%\*.txt" | For /d /r "tokens=* usebackq" %d in (`dir /s /b /ad .`) Do @Type "%~d\*.txt" dir .. を実行した結果を一行ずつ(tokens=*) %f に設定して、Do 以下を実行する。 dir... の結果はフォルダの数しかないから Do 以下の実行回数は減らせるけど、 dir /s /b /ad . の結果は、カレントフォルダを含まないから Type "%CD%\*.txt" も必要。

noname#210617
noname#210617
回答No.1

cdコマンドはカレントディレクトリを変更するものですから、それは一階層のディレクトリを指します。 typeコマンドは、ファイル名を指定して、その内容を表示するものです。 どちらのコマンドにも、"検索"という概念はありません。 あるディレクトリの階層下にあるテキストファイル名を取得するということなら、 cdでそのディレクトリをカレントディレクトリにして dir/s *.txt 数が多い場合は、これをファイル(たとえばfilelist.txt)にリダイレクトして dir/s *.txt > filelist.txt dir/s/b *.txt > filelist.txt とすると、フルパスでファイル名のみが取得できますから、このファイルを編集して、ファイル名の頭に type コマンドを追加して、バッチファイルにして実行すれば、すべてのファイルをtypeすることができます。 そんなことに意味があるかどうかは別として。

関連するQ&A