いつもお世話になっております。
DOSコマンドはほとんどわかりませんが、ファイル管理のため、何か一度にあるディレクトリ以下の多数のファイルの文字列を検索できるコマンドがあるかどうか探しております。
以下の方法であれば、一致するものも一致しないものも書き出されてしまうのですが、一致するもののみ書き出すためにはどうしたらよいか、よろしくご教授ください。
c:\>for /f "delims=" %i in ('dir /a-d /s /b c:\parent\childdocs\grandchild') do find /i /n
"KensakuTaisyo" %i
No.8ベストアンサー
- 回答日時:
[★この部分が結果該当しない★] というのは、コマンドのエコーバックのことですか?
findstr のところを、@findstr に変えてください。
>"usebackq"を使ったものをネットで見つけましたが、どうやら機能しないようです
そんなことはないです。何かの勘違いでしょう。
artoo 様、ありがとうございます。
やっと、思ったような結果が得られました。
エコーバックというのですか、しりませんでした。恥ずかしいかぎりです。
for /f "delims=" %i in ('dir /a-d /s /b c:\parent') do @findstr /i /n "ng-click" %i NUL
しっかりと動きました。: ) 感謝
"usebackq"の件も、はっきりとはわかりませんが、どうやらダブルクォーテーションでパスを囲んでいたことが理由だったような気がします。その後、プロンプトがフリーズしたのでexitしてまた始めました。そして、
for /f "usebackq" %i in (`dir /a-d /s /b c:\parent`) do @findstr /i /n "ng-click" %i
で、思うような結果がえられました!
本当にうれしいです!
的確なご指示、本当にありがとうございました。!
No.7
- 回答日時:
間違えて、同じ回答をしてしまいました。
したかった回答は、ファイル名:行番号:行の中身 を表示する方法を思いつきました。
for /f "delims=" %i in ('dir /a-d /s /b c:\parent\childdocs\grandchild') do findstr /i /n "KensakuTaisyo" %i NUL
・findstrに変える
・ファイル名として NUL を追加する
とても興味深く拝見させていただきました。ありがとうございます。
しかしながら、”[★この部分が結果該当しない★]”と書かれている部分を取り除くために四苦八苦しております。
これであれば、すべて読み込んだファイル名が出力されてしまうので、現在使っておりますものと同じ結果となります。
★いただきましたDOSプロンプトコマンド★★★★★★★★★★★★★★★★★
c:\>for /f "delims=" %i in ('dir /a-d /s /b c:\parent') do findstr /i /n "firstname" %i NUL
★結果★★★★★★★★★★★★★★★★★
c:\>findstr /i /n "firstname" c:\parent\childdocs1\gandchild1.php NUL
c:\parent\childdocs1\gandchild1.php:119: {{firstName}}
c:\parent\childdocs1\gandchild1.php:125: First Name: <input type=text ng-model="firstName2"><br>
c:\>findstr /i /n "firstname" c:\parent\childdocs1\gandchild2.js NUL
c:\parent\childdocs1\gandchild2.js:3: $scope.firstName = "Dareka",
[★この部分が結果該当しない★] ===> c:\>findstr /i /n "firstname" c:\parent\childdocs1\gandchild3.js NUL
[★この部分が結果該当しない★] ===> c:\>findstr /i /n "firstname" c:\parent\childdocs1\gandchild4.js NUL
バッチを書かなくても、なにか良い方法がないものか。。。少々意地になっております。
No.6
- 回答日時:
> 該当する行数と数行の該当箇所のみが表示されていたのですが
>一致する全てのファイル名と、指定した文字列を含む行の行番号を表示をしたいと思っております。それ以外は出力しないようにしたいのです。
この2つは、全く違うことを言ってるのですが、同じことを言ってるつもりでしょうか?
> 該当する行数と数行の該当箇所のみが表示されていたのですが
ファイル名が不要で、行番号と該当箇所を表示するだけなら、質問文のものの find を findstr に変えれば良いです。
>一致する全てのファイル名と、指定した文字列を含む行の行番号を表示をしたいと思っております。それ以外は出力しないようにしたいのです。
だと、1行コマンドでは無理です。先の回答に書いたスクリプトが必要。
No.5
- 回答日時:
ねんのためほそく.
ファイル名と一致する行番号と当該行を表示したいなら findstr 一発. たぶん for もいらん.
No.4
- 回答日時:
> 該当する行数と数行の該当箇所のみが表示されていたのですが
>一致する全てのファイル名と、指定した文字列を含む行の行番号を表示をしたいと思っております。それ以外は出力しないようにしたいのです。
この2つは、全く違うことを言ってるのですが、同じことを言ってるつもりですか?
> 該当する行数と数行の該当箇所のみが表示されていたのですが
ファイル名が不要で、行番号と該当箇所を表示するだけなら、質問文のものの find を findstr に変えれば良いです。
>一致する全てのファイル名と、指定した文字列を含む行の行番号を表示をしたいと思っております。それ以外は出力しないようにしたいのです。
だと、1行コマンドでは無理です。先の回答に書いたスクリプトが必要。
No.3
- 回答日時:
バッチスクリプトを作って、
@echo off
set X="KensakuTaisyo"
for /f "delims=" %%A in ('dir /a-d /s /b c:\parent\childdocs\grandchild') do find /i %X% "%%~A" >NUL && (
echo ====%%A====
for /f "delims=:" %%B in ('findstr /i /n %X% "%%~A"') do echo %%B
)
早速のご回答ありがとうございました。
以前、使っていたものは検索結果のファイル名、該当する行数と数行の該当箇所のみが表示されていたのですが、アクシデントでその一行コマンドをなくしてしまいました。
一番近いものをと上記のコマンドを書いたのですが、検索結果に該当しないファイル名まで長々と表示され、ディレクトリを絞らない限り、プロンプトのがいっぱいになってしまいます。
できれば、その以前使っていたバッチでないものを探し当てたいのですが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- UNIX・Linux ブレース展開の使い方での質問です 2 2023/07/15 16:06
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- その他(コンピューター・テクノロジー) Power Shellコマンドで作成日時を一括シフトする方法 3 2022/10/21 12:37
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- WordPress(ワードプレス) WordPressのサイトにPDFをアップロードした際にGoogleなどの検索結果に出ないでほしい 1 2022/08/03 10:44
- その他(ソフトウェア) 一太郎付属の”全件検索”ツールの不具合 3 2023/07/25 15:03
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
scpコマンドでリモートサーバの...
-
Illustratorのデータをまとめて...
-
rcpコマンドについて、教えて!
-
IBM漢字コードのSJIS変...
-
minicomでよく使うコマンド文字...
-
cactiでグラフが表示されない
-
netshでipv6がインストールでき...
-
DOSコマンドでのワイルドカ...
-
telnet,rlogin,rshの違いってな...
-
BATファイル実行にフォーカ...
-
linux(ubuntu)でiso展開を行っ...
-
DOS窓で仮想メモリのサイズを表...
-
コマンドプロンプトでバッチフ...
-
UNIX環境で、DOSでいう"treeコ...
-
cdコマンドの移動先の取得に...
-
ddコマンドでWindowsマシンのイ...
-
残り日数のカウント方法について
-
コマンド プロンプトで作成し...
-
viエディタを使って楽に打ち込...
-
デバイスの空き容量をゼロ化す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
scpコマンドでリモートサーバの...
-
IBM漢字コードのSJIS変...
-
DOSコマンドでのワイルドカ...
-
Illustratorのデータをまとめて...
-
GNOME端末の起動 及び コマンド...
-
cactiでグラフが表示されない
-
Windows10のRegSys32に登録され...
-
rcpコマンドについて、教えて!
-
FTP接続中のコマンド実行結果を...
-
AIX ksh利用 grep 検索で マ...
-
属性変更できないです。
-
【ターミナル】MacBookにディー...
-
Linux shell ftp 転送 エラー制御
-
別名でリンク先を保存。
-
linuxのreadコマンドについて
-
Warning: Output is not to
-
UNIXシェル内での日付計算
-
telnet,rlogin,rshの違いってな...
-
loggerコマンドでkern.warning...
-
PC-DOSのバージョンの違いによ...
おすすめ情報
早速のレスありがとうございます。
”KensakuTaisyo”の文字列に一致する全てのファイル名と、指定した文字列を含む行の行番号を表示をしたいと思っております。それ以外は出力しないようにしたいのです。
for /f "usebackq" %i in (`dir /a-d /s /b 検索対象パス`) do find /i "検索文字列" %i
という"usebackq"を使ったものをネットで見つけましたが、どうやら機能しないようです。どうしてでしょう。。。難しいです。。。