このスクリプトを使用して、ファイル名を含むログファイルを読み取り、これらのリストで文字列(ワイルドカードを含む)を検索しましたが、findstr関数のパイプが機能しません。
setlocal enabledelayedexpansion
for /f %%A in (./Log.txt) do (
set "file=%%A"
echo !file!
echo !file!|findstr ".*_DE.pdf"
IF %ERRORLEVEL%==1 echo "gefunden"!file!
)
エラーが発生します:Ein Prozess hat versucht、zu einer nicht bestehenden Pipe zu schreiben。
翻訳済み:プロセスが存在しないパイプに書き込もうとしました
コマンドラインでのテストは問題ありません
構文の失敗やオプションの欠落があるといいのですが?
そのメッセージを受け取る唯一の方法は、パイプの右側(findstr
)が閉じてから、左側(echo
)がstdoutへの書き込みを終了することです。
findstr
が正しいコマンドを実行していない限り、それがどのように可能かわかりません。現在のフォルダまたはPATHにfindstr.bat
などがないことを確認してください。
このような問題を回避する(またはこれが問題であることを確認する)1つの方法は、FINDSTRへのフルパスを提供することです。
echo !file!|"%windir%\system32\findstr.exe" ".*_DE.pdf"
上記の変更で問題が解決した場合は、どこかに不正なFINDSTR実行可能ファイルが必要です。