1

Windows コマンドでは、temp dir が次のように設定されています。

 C:\spec>echo %temp%
 C:\Users\mahmood\AppData\Local\Temp

%temp%\specdev.txt を含むファイルもあります

 C:\spec>type %temp%\specdev.txt
 c:\cpu

このコマンドを実行すると

findstr -r "^[a-zA-Z]:$" %temp%\specdev.txt >nul 2>&1

何も返さない!!

C:\spec>findstr -r "^[a-zA-Z]:$" %temp%\specdev.txt >nul 2>&1

C:\spec>

何が問題ですか??このコマンドが何をするのか説明できますか? これはバッチ スクリプトの一部です。

4

3 に答える 3

4

すべてのコンソール出力が NUL にリダイレクトされるため、結果を表示できません。コマンドの最後の部分は、>nul標準出力を NUL に2>&1リダイレクトし、エラー出力を標準出力 (したがって NUL) にリダイレクトします。

このコマンドはスクリプトの一部であるため、役に立たないという意味ではありません。FINDSTR は%ERRORLEVEL%、一致が見つかった場合はグローバル環境変数を 0 に設定し、一致しない場合は 1 に設定します。したがって、スクリプトはすべての出力を NUL に送信し (ユーザー画面を詰まらせないように) %ERRORLEVEL%、結果を確認するためにチェックできます。

このコマンドが検索するパターンについては、"^[a-zA-Z]:$""a" から "z" (大文字と小文字) までの 1 つの文字のみを含み、コロン ":" で終わる行を検索することを意味します。したがって、%temp%\specdev.txt記述したファイルは式と一致しません。

于 2012-04-30T18:18:42.997 に答える
0

問題は、文字列が正規表現と一致しないことです。正規表現は、1文字の後に文字が続くだけの行と一致します':'

さて、問題は、どのパターンを本当に一致させたいかということです。多分あなたが望む:

"^[a-zA-Z]:"

これは、文字の後にaが続く行に一致します':'(ただし、行の後に他の文字を含めることができます)。しかし、もっと複雑なものが必要だと思います。

于 2012-04-30T18:06:55.223 に答える
0

代わりに次のコードを試してください。

findstr -r "^[a-zA-Z]*$" %temp%\specdev.txt >nul 2>&1
于 2012-04-30T18:04:00.277 に答える