2016-05-13 5 views
3

を発見された後、私はDIRを使って何かを検索することができます検索 - 以下の例取る:それは全体の構造を介して取得する時間がかかりますが、停止DIRコマンド最初のヒットがCMD.EXEで

DIR C:\*EXCEL.EXE /A:-D /B /S 

をC:\ドライブ、最初の試合は比較的速いです。

Q:への道が自動的にありヒットが発見された後、検索を続けるのコマンドを止めますか?

私は実際にcmdプロンプトをシェルし、別のスクリプトにStdOutを読み込みたいので尋ねていますが、検索が完了するまで待つと非常に長い休止があります。

+0

必要なものは、最初の行だけを取るために 'head -1'のようなものです。おそらくPowershellではかなり簡単です。それはあなたが使うことができるオプションですか? – lit

+0

潜在的に - PowerShellの出力を読むのに同じ方法を使うことができると思いますが、検索に使用する構文についてあまりよく分かりません_within_ PowerShell –

+0

別のプロセスで 'dir'のようなコマンドを実行する方法があります特定のポイントで殺される可能性がありますが、私はどのように行ごとに出力を得るか分かりません。リダイレクトは、コマンドが終了するまで待つので動作しません... – aschipfl

答えて

3

あなたがdirを停止することはできませんが、あなたはanoterメソッドを使用することができますはるかに

for /r "c:\" %%i in (excel.exe) do (echo -- %%i & goto :eof) 
+0

OPのような '* excel.exe 'を意味しますか? – aschipfl

+0

これは私のスクリプトで 'StdOut.ReadAll()'メソッドを使用しているので良くない出力をたくさん与えています。 –

+1

for/rは、goto:EOFに達してもループし続けます。一致の出力を停止しますが、ハードドライブの動作は継続します。私は '/ R'、' dir/s/b'、 'forfiles/s'、' where/r'をテストしました。私はまだ最初の試合の後に復帰して休憩する方法を探していますが、おそらく 'goto'ループが含まれています。 OPの特定の問題に対する最良の解決策は、レジストリを調べてOfficeのインストールされた場所を特定することですが、再帰の質問に対する解決策を見つけるのはまだ興味があります。 – rojo

0

これは私が発見したこと、これを行うための最速の方法となっています。

実行この場所を取得するには...(ウェイ速いDIRより)

where /r %systemdrive% inventor.exe

あなたは実際に出力がこれを実行に使用したい場合は...

where /r %systemdrive% inventor.exe > %userprofile%\loctest.txt

次にこれを実行して、使用する変数を設定します。 注:

for /f "tokens=*" %%G in (%userprofile%\loctest.txt) do (set testvar=%%G) 

あなたはその後、実行することができます(のみこれを実行している場合、1%を使用し、手動ではなく、.batファイルまたは.cmdのを忘れないでください)エコー%testvar%...値を参照するには

Here is what is looks like from the command line

関連する問題