• ベストアンサー

windows7のコマンドでファイルを検索したい

windows7のコマンドでファイルを検索したいのですが、 調べてみると下記のようなコマンドで調べれるとの事でした。 dir /s /b *** しかしこれではカレントディレクトリからしか調べる事ができず不十分です。 全てのドライブからこのファイルを検索したいというコマンドを探しております。 unixでいえば find / -name *** のようなものです。 windows7のコマンドプロンプトではこのような事はできないのでしょうか。

  • carper
  • お礼率47% (233/493)

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

  • ベストアンサー
回答No.2

>find / -name *** のようなものです そもそも、OSの違いをちゃんと理解していれば、こんな質問にはならないはずなんですけどね・・・・ No1さんの回答だと、たぶん理解できないのではないかと。find でも同じですが、パスを指定しているので、そこからの検索になります。指定しないと、カレントフォルダー配下になります。 dir コマンドも同じです。引数にパスを指定すれば言いだけの話です。まあ、例をあげておきましょう。 >dir c:\ d:\ e::\ >for /r %a in () >forfiles /? などたくさんあります。 http://technet.microsoft.com/ja-jp/library/cc772390(v=ws.10).aspx 等をみましょう。また、これらのコマンド組み合わせるの常套手段でしょう。 別なものでは、 http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=wmic+datafile+where から http://technet.microsoft.com/en-us/library/cc758713(v=ws.10).aspx などをみれば wmic コマンドでのやり方がでています。つまり、 WMIC DATAFILE WHERE "PATH= など where句を使えば、拾ってこれます。 http://technet.microsoft.com/en-us/library/cc739502(v=ws.10).aspx など上から順番にみてゆけば、達成方法がいくつもあり、状況にあわせて、チョイスしながら、つかうことになります。 >全てのドライブからこのファイルを検索 UNIXにはドライブと言う概念がありません。論理デバイスをマウントうする形になり、どこにマウントされるかが問題になりますが、Windowsは、その倫理デバイスが、論理ドライブと言う概念にとって代わったことになり、それにあわせた方法論を展開すべきことです。例えば、そのマシンで有効になっている(マウントされている)ドライブレターの取得方法とか。 WSH(JScript or VBScript)、 WMIなどで簡単に取得できます。 http://search.yahoo.co.jp/search?p=Windows+%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%83%AC%E3%82%BF%E3%83%BC%E3%81%AE%E5%8F%96%E5%BE%97&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt など検索すれば結構出てきます。 >echo list volume | diskpart | find "NTFS" なんてすると、リストする方法もあります これを組み合わせると for /f "xxxxxx" %a in (`echo list volume ^| diskpart ^| find "NTFS"`) do ( dir /s %c:\*.log ) (オプション等略しています) などとなるでしょうね 状況により、コマンドとスクリプト言語を、適時、適所に組み合わせる事になるでしょうね。UNIX、Linux系のスクリプトも全く同じですね。できないこともたくさんあるので、いくつものコマンドを組みあわせることになっています。たとえば、sed , awk はとても重宝しているコマンドですが、WindowsではJScript, VBScript , power script でもっと簡単に出来ています。 WMIを使うのが一番簡単かと。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

*.txtをドライブCルート直下から一覧出力するコマンド例。

関連するQ&A

  • unixのfindコマンド

    unixのfindコマンドで、ある複数のディレクトリから指定のファイル名だけを 検索し、その結果をgrepしたいのですが、 例えば 01_dir 02_dir : 11_di : 21_dir : と言うディレクトリがあります。 そこから、「0」で始まっているディレクトリの中なら拡張子が*.txtを 検索し、その検索したファイルに対して、grepを実行したいのですが、 上手くいきません。 もちろん、各ディレクトリには、「.txt」以外のファイルもありますし、 ファイル名にも条件を付与したいです。 以下の様に、 find . -name "0*_dir" -type d -print | xargs ls -l *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs ls *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls -l '{} /*.txt' | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls {} "検索文字" とやってみたのですがだめでした。 find ./ -type d \( -name '1_*dir' -o -name '2*_dir' -o -name '3*_dir' \) -prune -o -type f -print と「-prune」で除外するディレクトリを指定すればできなくはないですが、 すべてのディレクトリ書くのはいい方法ではないです。 よい方法をお願いします。 OSは、Solaris 11.3です。

  • MsDosでファイル名とファイル内の文字列の検索

    リナックスコマンドでいうところの find -name xxxx -exec grep $test {} \;の処理を コマンドプロンプトにて、利用したいと考えています。 dir xxxx /s /b | find "$test" こういった記述で出来るのではないかと考えたのですが。 findが"ファイル名"を検索するためファイルの中身を検索してくれません。 何かいい方法は御座いませんか? また、dirで取得したパスを配列に入れて、foreachでファイルの中身を検索し続けるということは可能でしょうか? よろしくお願いいたします。

  • カレントディレクトリ内のファイル検索

    Windows2003環境で、カレントディレクトリ下に存在するwmvファイル数をカウントしたい。UNIXでいう[find ./ -name *.wmv |wc -l] 何かよい方法はありませんでしょうか?

  • コマンドプロンプトで5日以上前に更新されたファイルを検索したいです。

    コマンドプロンプトで5日以上前に更新されたファイルを検索したいです。 unixでいうfindコマンド(-mtimeオプション)のようなコマンドはありますでしょうか? エクスプローラーで検索時更新日時を指定できますので、コマンドプロンプトでもできるのでは?と思ったのですが、自分では見つけられず…。 宜しくお願いします。

  • DOSコマンドについて

    Windowsのコマンドプロンプトにてカレントディレクトリでのdirコマンドは表示されますが、cd \の後にdir \Documents and Settingsを行うと同じ表示になりません。 どうしてでしょうか? また\ディレクトリから\Documents and Settingsの内容表示する方法はありますか? 回答をお願いします。

  • WindowsでPATHにあるコマンドを補完?

    お世話になります。 Windowsのコマンドラインプロンプトでは、ある程度タイプして[TAB}キーを押下すると、カレントディレクトリにあるファイル名を補完してくれます。 たとえば xxxxYYY というファイルがあるディレクトリにおいて  C:\foo\> x[TAB] のようにタイプすると、xxxxYYYと補完されます。 LinuxやMacを含むUNIX系のコマンドライン環境では、カレントディレクトリだけでなく、PATHに入っているコマンドも補完してくれます。具体的に言うと、C:\myProgram\bin\xxxxYYY.exeというコマンドを、C:\fooという全然違うカレントディレクトリにあっても、  C:\foo\> x[TAB] で補完してくれます。 この、PATHにあるコマンド名の補完は、Windowsでも可能でしょうが。 具体的には、何らかのフリーウェアを常駐させる、レジストリを書き換えるなどによって、可能になるでしょうか。 私は20年以上DOS/Windowsを使い込んでいるのですが、この機能さえあれば本当に助かります。 Linuxを使え、WindowsでCygwinを使えというのはナシで、あくまでWindowsのcmdを使い続けるという前提でお願いします。 よろしくお願いいたします。

  • Windows2000 コマンドプロンプト

    Unixも全然詳しくないのですが、 ls -l というコマンドでディレクトリ内のファイルを表示させると、オーナーと言うのでしょうか?誰がそのファイルを最終修正したか、というのが表示されると思うのですが、同じ事をコマンドプロンプトで出来ないでしょうか? もし同じようなコマンドがありましたら教えて頂けませんか?色々と調べているのですが見つかりません・・・ よろしくお願いします。

  • 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に空白までのファイル名が挿入されていることが原因だと思います。 コマンドで検索されたファイルを""で括るようなことができれば解決できると思っていますが、そのようなことができるのか知っている方がおりましたら教えていただけないでしょうか? よろしくお願いいたします。 以上

  • findで複数の場所から検索

    findで  /dir1 または /dir2 (さらには /dir3 も)からのファイルの検索はどのように書けばいいでしょうか? $ find "/dir1|/dir2" -name "nanashi" find: `/dir1|/dir2': そのようなファイルやディレクトリはありません $ find (/dir1|/dir2) -name "nanashi" bash: 予期しないトークン `/dir1' 周辺に構文エラーがあります よろしくお願いします。

  • コマンドプロンプトでのワイルドカードによるコピー

    こんにちは、よろしくお願い致します。 コマンドプロンプトにおいて Dirというディレクトリの下に、Dir1、Dir2、・・・DirNのようにN個のディレクトリがあったとします。 この時Dir1、Dir2、・・・DirNの直下にあるすべてのファイルだけ、つまり Dir\Dir1\* Dir\Dir2\* ・・・ Dir\DirN\* を、一気にカレントディレクトリにコピーしようとして cp Dir\*\* . としても、上手くいきませんでした。 (Dir1などのディレクトリごとをコピーをするのではない) どうやら、ディレクトリの名前にワイルドカードを使うことができないようでした。 何かいい方法はありませんでしょうか?