在批处理文件中,我有一个字符串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/

    10-11 19:23