$ 1という変数にいくつかのテキストがあるとしましょう。今、$ 1に特定の文字列が含まれているかどうか確認したいと思います。特定の文字列が含まれている場合は、メッセージを印刷します。印刷は問題ではない、問題はチェック...それを行う方法ですか?バッチファイル(Windows)の部分文字列の文字列を確認しますか?
答えて
私の知る限り、cmd.exeには質問に直接答える組み込み関数がありません。しかし、はサポート交換操作を行います。つまり、$ 1では空の文字列で存在をテストするために必要な部分文字列を置き換え、$ 1が変更されているかどうかを確認します。それがある場合には部分文字列が含まれています(そうしないと、置換操作では最初は置き換えられません)。以下のコードを参照してください:
set longString=the variable contating (or not containing) some text
@rem replace xxxxxx with the string you are looking for
set tempStr=%longString:xxxxxx=%
if "%longString%"=="%tempStr%" goto notFound
echo Substring found!
goto end
:notFound
echo Substring not found
:end
注 - このタイプの検索では、大文字と小文字は区別されません。また、特殊文字に問題があるかもしれません。検索/置換と平等チェックの両方に遅延拡張を使用すると、より堅牢です。しかし、検索文字列に '=' charを含めることはできません。検索文字列は '〜'や '*'で始めることはできません。 – dbenham
@dbenham:確かに公正な発言ですが、私のソリューションは完璧ではありません(cmd構文と同じですが)。 –
SET検索をし、多くの場合、トリック作品を交換するが、それは大文字と小文字を区別したり、正規表現検索をサポートしていません。
大文字と小文字を区別した検索や限定された正規表現のサポートが必要な場合は、FINDSTRを使用できます。
特殊文字をエスケープするのを避けるには、検索文字列が変数にあり、検索とターゲットの両方が遅延拡張によってアクセスされる場合が最適です。
ECHOコマンドを使用して、$ 1をFINDSTRコマンドにパイプすることができます。 $ 1が未定義の場合はECHO(
を使用し、余分なスペースを入れないように注意してください。 ECHO !$1!
は、$ 1が未定義の場合ECHO is off.
(またはon)をエコーしますが、未定義の場合はECHO(!$1!
が空白行をエコーします。
FINDSTRは検索文字列が見つかると$ 1をエコーします。出力をnulにリダイレクトする必要はありません。 FINDSTRは、検索文字列が見つかった場合はERRORLEVELを0に、見つからない場合は1に設定します。これは、文字列が見つかったかどうかを確認するために使用されます。 &&
および||
は、一致(ERRORLEVEL 0)または一致なし(ERRORLEVEL 0以外)のテストに便利な構文です
正規表現のサポートは基本的ですが、それでも役立ちます。
FINDSTR /?を参照してください。詳細については。
この正規表現の例では、文字列の先頭に "BEGIN"、最後に中間に "MID"、最後に "END"を検索します。検索は、デフォルトで大文字と小文字が区別されます。
set "search=^BEGIN.*MID.*END$"
setlocal enableDelayedExpansion
echo(!$1!|findstr /r /c:"!search!" >nul && (
echo FOUND
rem any commands can go here
) || (
echo NOT FOUND
rem any commands can go here
)
私の意見では、最も簡単な方法はこれです:
set YourString=This is a test
If NOT "%YourString%"=="%YourString:test=%" (
echo Yes
) else (
echo No
)
Basiclly後の文字列「:」あなたが探しているとあなたがもしので、%文字列のインフロントではない使用している文字列です。 * %は、文字列から*を削除します。
[Igorの回答](http://stackoverflow.com/a/8757658/1012053)と同様に、このテストでは大文字と小文字は区別されません。また、遅延拡張を使用する方が安全です。最後に、部分文字列に '='が含まれている場合は使用できません。 – dbenham
- 1. メッセージの部分文字列の部分文字列の部分文字列
- 2. 文字列aが文字列bの部分文字列かどうかを確認する方法は?
- 3. 文字列の部分文字列
- 4. 文字列のスカラフィルタ部分文字列
- 5. 文字列内の部分文字列
- 6. 文字列から部分文字列を抽出します。
- 7. 文字列と部分文字列とメイン文字列に含まれる部分文字列の数
- 8. NSArrayのNSStringを含む文字列の部分文字列を確認しますか?
- 9. 文字列(MS Excel)内の部分文字列の場所(文字数など)を確認する方法
- 10. 文字列内の特殊文字(/ * - + _ @&$#%)を確認しますか?
- 11. 部分文字列のpowershell部分文字列
- 12. 文字列をiOSの部分文字列に分割する
- 13. 正確な部分文字列が文字列内にあるかどうか確認してください。
- 14. 文字列を連続する部分文字列に分割しますか?
- 15. 別の列の値の部分文字列を確認する列
- 16. 文字列j番目の文字列の2番目の部分文字列に分割文字列
- 17. ディレクトリ文字列の最後のスラッシュをバッチファイルで部分文字列にする方法はありますか?
- 18. 文字列の部分文字列を置換する方法Javaの空の部分文字列 ""(部分文字列を削除する)
- 19. Liquidの文字列から部分文字列を取得しますか?
- 20. 新しい列の部分文字列スライス(または文字列分割?)
- 21. 文字列内の部分文字列の配列を検索します。
- 22. 文字列を複数の部分文字列に分割します。
- 23. 変数を使用したバッチファイルの部分文字列置換
- 24. SML文字列で始まる文字列を確認する
- 25. 文字列で始まる文字列を確認する
- 26. 文字列を部分文字列に分割するc
- 27. 文字列から部分文字列を作成する
- 28. 文字列から部分文字列を抽出する
- 29. 正確な部分文字列を使用したフィルタ文字列
- 30. ジオロケーションが検索文字列の部分文字列であるかどうかを確認
ここから開始:http://www.dostips.com/DtTipsStringManipulation.php –
ありがとう! doesntは本当に助ける...私はsomethiingがより容易であることを望んでいた。他のアイデア? – EOB