如何在批处理文件中评估带有两个单词的变量?

时间:2015-05-25 14:48:59

标签: batch-file cmd batch-processing

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

我需要将批处理文件中的内容回显到.txt文件。 我面临的问题是,当我在它们之间放置两个单词或数字或字母时,程序会崩溃。有人能告诉我导致它崩溃的原因以及如何纠正它。

*ex* is for exiting.  

2 个答案:

答案 0 :(得分:0)

if语法为if somestring operator anotherstring dosomething

最常见的运算符为==,而dosomething则两个字符串必须完全匹配。

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

因此

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

应该适合你(目前还不清楚你是否打算在字符串中包含星号 - 如果是这样,匹配是字面,所以星号意味着“任何字符“)

if /i ....

会使比较不区分大小。

答案 1 :(得分:0)

如果*应该在*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:使用以下语法编辑和替换分配给字符串变量的字符。

  

语法

  %variable:StrToFind=NewStr%
     

关键

     
      
  • StrToFind :我们正在寻找的角色;
  •   
  • NewStr  :要替换的字符(如果有的话);
  •   
  • 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"