在批处理文件中,我有一个字符串abcdefg
。我想检查bcd
是否在字符串中。
不幸的是,似乎所有找到的解决方案都是在文件中搜索子字符串,而不是在字符串中搜索子字符串。
有一个简单的解决方案吗?
最佳答案
是的,您可以使用替换并检查原始字符串:
if not x%str1:bcd=%==x%str1% echo It contains bcd
%str1:bcd=%
位将用空字符串替换bcd
中的str1
,使其与原始字符串不同。如果原始文件中不包含
bcd
字符串,则修改后的版本将相同。使用以下脚本进行测试将显示其运行情况:
@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal
以及各种运行的结果:
c:\testarea> testprog hello
c:\testarea> testprog abcdef
It contains bcd
c:\testarea> testprog bcd
It contains bcd
一些注意事项:
if
语句是此解决方案的关键,其他所有内容均是支持内容。 x
是为了确保字符串bcd
可以正常工作。它还可以防止某些“不合适的”起始字符。 关于windows - 批处理文件: Find if substring is in string (not in a file),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7005951/