2017-12-18 10 views
1

私は、ユーザーが文字列 "blahblahblah = 12345"を入力し、等号を含む文字列の最初の13文字をSTRIPで入力できるようにバッチファイルを取得する方法を見つけようとしています。問題は =(等号)を入力しようとするたびに "これは予期しなかった"エラーです。ここでユーザーがWindowsのバッチファイルのCLIに入力する文字列からEQUALS SYMBOLを削除するにはどうすればよいですか?

は、バッチスクリプトです:

REM BEGIN 

@echo off 

set /p STUFF="type in something: " 

IF %STUFF%==blahblahblah^= goto 2 

:2 

set STUFF=%STUFF:~13% 

echo %STUFF% 

REM END 

[OK]を、今私が望むものを実際に限り、私がそうであるように動作しないINPUT AN =(等号)

だから、入力はblahblahblah12345 した場合出力は次のとおりです。12345

しかし、I入力blahblahblah=12345 は、出力が

ある場合
=12345==blahblahblah= was unexpected this time. 

私はFOR /f "delims== tokens=1"のことをやってみましたが、私がしようとしていることのためにその仕事をする方法を理解できません。それはかなり具体的です、私はちょうど "12345"から "blahblahblah"と同様に等号を削除したいので、出力はちょうど "12345"です。誰も助けることができますか?

+0

私の提案は、最初から** '=' **を入力することではありません!文字列/合計/変数を求めてから価値を求めようとすると、どんな害がありますか? 'Set/P '変数=変数名を入力:' '続いて' 'Set/P' '値=%variable%の値を入力:" – Compo

答えて

0

使用引用符:

IF "%STUFF%"=="blahblahblah=" goto 2 

バッチは、引用符バッチなしIFが失敗する原因IF blahblahblah=12345==blahblahblah goto 2のようなものを解釈し、コマンドを処理する前に、変数を展開し、そう。

+0

omfg。私は引用で何も見つけられなかったので、ありがとうございました。出来た! –

+0

btw、なぜあなたは%STUFF%を引用符で囲む必要があるのか​​説明できますか?私はそれがちょうど "blahblahblah ="の引用で動作すると思ったが、明らかにそれはそうではない、私がそれを試したように、それは動作しませんでした。しかし、あなたの例では、私はちょうど変数の周りに引用符を入れなければならない理由を理解していない? –

+0

@TomcatCruiserの場合、比較はLITERAL文字列比較です。簡潔でシンプル。 Qutoesはスペースや特殊文字を保護するために常にバッチファイルで使用されます。私のベストプラクティスは常にそれらを使用することです。 – Squashman

関連する問題