如何在批处理文件中用两个词评估变量?

How to evaluate a variable with two words in a batch file?

top
set /p alt=      
echo %alt%>>123.txt    
if %alt% equ *ex* goto ex   
goto top
:ex  
exit  

我需要将批处理文件中的内容回显到 .txt 文件中。 我面临的问题是,当我在两个单词或数字或字母之间加上空格时,程序会崩溃。谁能告诉我是什么导致它崩溃以及如何纠正它。

*ex* is for exiting.  

if 语法为 if somestring operator anotherstring dosomething.

最常用的运算符是==,要dosomething则两个字符串必须完全匹配。

要对包含空格等分隔符的字符串进行分组,"enclose the strings in double-quotes"

因此

if "%alt%" equ "ex" goto ex

应该适合您(不清楚您是否打算在字符串中包含星号 - 如果是,则匹配为 文字 ,因此星号将 not 表示 "any characters")

if /i ....

将使比较不区分大小写。

如果**ex*字符串中字面意思

:top
set /p alt=      
echo %alt%>>123.txt    
if "%alt%" equ "*ex*" goto :ex   
goto :top
:ex  
exit  

如果您的意思是 * 作为一种 通配符 字符(如 dir *.txt):

if NOT "%alt:ex=%" equ "%alt%" goto :ex

Variable Edit/Replace:使用以下语法编辑和替换分配给字符串变量的字符。

Syntax

  %variable:StrToFind=NewStr%

Key

  • StrToFind : The characters we are looking for;
  • NewStr  : The chars to replace with (if any);
  • variable  : The environment variable.

下一个示例显示不区分大小写:

-->echo "%OS%" == "%OS:kuk=%" ## "%OS:S_nt=%"

"Windows_NT" == "Windows_NT" ## "Window"

-->echo "%ProgramFiles%" == "%ProgramFiles:ex=%" ## "%ProgramFiles:AM fi=%"

"C:\Program Files" == "C:\Program Files" ## "C:\Progrles"