web-dev-qa-db-ja.com

バッチファイル、ディレクトリ| forループ内のfindstr

はじめに、私はバッチファイルの完全な初心者であることを認めます...そして一般的なプログラミング言語です。ユーザーがpartialファイル名を入力できるバッチファイルを作成しようとしていますが、数十のサブファイルが検索されます-ディレクトリ、名前にユーザー入力が含まれているすべてのpdfファイルを見つけて開きます。私はそれが2から8の異なるpdfファイルを見つけることを期待しています。

以下を使用してファイルパスを返すことができます

set /p Number="Enter the Job-Shaft Number "

echo Searching folders

dir /b /s "*.pdf" | findstr /i "%Number%"

しかし、実際に何かを実行できるようにforループでラップしようとすると、問題が発生します:

for %%G in ('dir /b /s "*.pdf" | findstr /i "%Number%"') do echo %%G

パイプが気に入らないようです。助言がありますか?

P.S.エコーだけでなく、実際にpdfファイルを開いてほしいのですが、まだそれほど進んでいません。今それを機能させることができなければ、私にはまだ物事をもっと複雑にする意味がありません。

1
Gumbi

コマンドを実行するには、次のことを行う必要があります

  1. のすぐ後ろに/fを挿入します
  2. "delims="notに挿入します出力をトークン化します
    (デフォルトでは"tokens=1 and delims= "は空白の後に切り捨てられます)
  3. パイプ記号^|をエスケープして、バックグラウンドで実行されるセカンダリcmd.exeに渡します。

for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G

%Number%が実際に数値を表す場合は、/iスイッチを使用する必要はありません。

2
LotPings