我需要查明某个环境变量(比方说 Foo)是否包含 Windows 批处理文件中的子字符串(比方说 BAR)。有没有办法只使用批处理文件命令和/或 Windows 默认安装的程序/命令来做到这一点?
例如:
set Foo=Some string;something BAR something;blah
if "BAR" in %Foo% goto FoundIt <- What should this line be?
echo Did not find BAR.
exit 1
:FoundIt
echo Found BAR!
exit 0
要使这个简单的批处理文件打印“Found BAR”,上面标记的行应该是什么?
最佳答案
当然,只需使用旧的 findstr:
echo.%Foo%|findstr /C:"BAR" >nul 2>&1 && echo Found || echo Not found.
除了 echo
ing 之外,您还可以在那里的其他地方分支,但我认为如果您需要基于此的多个语句,则以下内容更容易:
echo.%Foo%|findstr /C:"BAR" >nul 2>&1
if not errorlevel 1 (
echo Found
) else (
echo Not found.
)
编辑:记下jeb's solution以及哪个更简洁,尽管它需要额外的心理步骤来弄清楚它在阅读时的作用。
关于windows - 找出环境变量是否包含子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5491383/