top
set /p alt=
echo %alt%>>123.txt
if %alt% equ *ex* goto ex
goto top
:ex
exit
我需要将批处理文件中的内容回显到.txt文件。 我面临的问题是,当我在它们之间放置两个单词或数字或字母时,程序会崩溃。有人能告诉我导致它崩溃的原因以及如何纠正它。
*ex* is for exiting.
答案 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"