" があると失敗します。
入力される文字列に " がある可能性があるなら、置換するコードをさらに記述する必要があります。
よほどの事情がない限り、VBScript か JavaScript を使った方が簡単です。
作成 2010.02.25
更新 2017.08.09
更新 2017.08.09
BAT ファイルで変数に特定の文字列が含まれているか確認する
既知の問題
コード1
検査対象 %VAR1% ~ %VAR4% に %SERCHTEXT% が含まれるか確認し、結果を ERRORLEVEL で取得します。
@ECHO OFF @REM テストする変数 SET VAR1=01234567890 SET VAR2=test4567890 SET VAR3=012test7890 SET VAR4=0123456test @REM 検索対象 SET SEARCHTEXT="test" ECHO %VAR1% | find %SEARCHTEXT% >NUL IF NOT ERRORLEVEL 1 (ECHO %VAR1% TRUE) ELSE (ECHO %VAR1% FALSE) ECHO %VAR2% | find %SEARCHTEXT% >NUL IF NOT ERRORLEVEL 1 (ECHO %VAR2% TRUE) ELSE (ECHO %VAR2% FALSE) ECHO %VAR3% | find %SEARCHTEXT% >NUL IF NOT ERRORLEVEL 1 (ECHO %VAR3% TRUE) ELSE (ECHO %VAR3% FALSE) ECHO %VAR4% | find %SEARCHTEXT% >NUL IF NOT ERRORLEVEL 1 (ECHO %VAR4% TRUE) ELSE (ECHO %VAR4% FALSE)
コード2
検査対象 %VAR1% ~ %VAR4% に %SERCHTEXT% が含まれるか確認し、結果を %RESULT% に格納しています。
せっかく作ったので。
せっかく作ったので。
@ECHO OFF @REM テストする変数 SET VAR1=01234567890 SET VAR2=test4567890 SET VAR3=012test7890 SET VAR4=0123456test @REM 検索対象 SET SERCHTEXT=test @REM 検索対象の文字の長さ SET SERCHLEN=4 @REM 検索結果 0:未検索 1:検索対象が含まれる -1:検索対象が含まれない SET RESULT=0 CALL :STRCHECK %VAR1% IF %RESULT%==1 (ECHO %VAR1% TRUE) ELSE (ECHO %VAR1% FALSE) CALL :STRCHECK %VAR2% IF %RESULT%==1 (ECHO %VAR2% TRUE) ELSE (ECHO %VAR2% FALSE) CALL :STRCHECK %VAR3% IF %RESULT%==1 (ECHO %VAR3% TRUE) ELSE (ECHO %VAR3% FALSE) CALL :STRCHECK %VAR4% IF %RESULT%==1 (ECHO %VAR4% TRUE) ELSE (ECHO %VAR4% FALSE) EXIT /B :STRCHECK SET RESULT=0 CALL :INCHECK %1 -1 EXIT /B %RESULT% :INCHECK SET CHECKVAR=%1 SET /A CHECKPOINT=%2+1 CALL SET CHECKDATA=%%CHECKVAR:~%CHECKPOINT%,%SERCHLEN%%% IF "%CHECKDATA%" EQU "%SERCHTEXT%" ( SET RESULT=1 ) ELSE ( IF "%CHECKDATA%" EQU "" ( SET RESULT=-1 ) ELSE ( CALL :INCHECK %CHECKVAR% %CHECKPOINT% ) ) EXIT /B %RESULT%
タグ: BAT