2012-01-18 3 views
1

ループを含むbatファイルを実行しようとしています。 ループを実行すると、ファイルの実行が中止されます。バットファイルの簡単な引用符の問題

エラーが何であるかを理解するためのコマンドを少し変更しました。単純な引用符をループに入れることができないようです。

/f "tokens=1,2 delims==" %%i IN ("version=X.Z.W") do set VERSION=%%j -> success 
/f "tokens=1,2 delims==" %%i IN ('version=X.Z.W') do set VERSION=%%j -> failure 

version=X.Z.Wfindstr /B /c:"%var%=" ..\..\file.properties

によって返されるべきであるように、それは私が別の机の上にテストされており、この問題は私のコンピュータで発生迷惑です。 変更する設定があるかどうかご存知ですか?

コマンドプロンプトに直接コマンドを入力するときに問題が発生しました。

ありがとうございました。

+0

私は具体的な内容を尋ねる必要があります:1.それぞれのコンピュータはどのようなOS(サービスパックを含む)を実行していますか?2.どのファイルが 'FINDSTR'を実行しようとしていますか?それはシステムファイル/ログ、個人ファイルなどです(ファイル拡張子を含めてください)。 – Mechaflash

答えて

0

上記をコマンドプロンプトに直接入力すると、%の代わりに%%を使用したため、これが失敗します。 Windows CMDは、バッチファイルを処理するので、%%を読み取ることはありません。

"とは対照的に'は、CMDによって異なって読み込まれます。 'はコマンドとして読み取られ、"はリテラル文字列として読み取られます。

+0

こんにちは、 実際、バッチファイルでは%%を使用する必要があります。 コマンドライン: /f "tokens = 1,2 delims =="%i IN( 'findstr/B/c: "%var%=" .... \ file.properties ")は次のように設定します。VERSION = %j は私のコマンドラインでは動作しませんが、別のコンピュータでは動作します。変数varはすでに "version" – Rib

+0

に設定されているので、失敗したコマンドは 'FOR/F 'です。トークン= 1,2 delims =="%i IN(' findstr/B/c: "%var%=" .. .. \ file.properties ')VERSION =%J'を設定しますか? – Mechaflash

+0

はい、コマンドを使用するたびに失敗しました ' – Rib