我尝试使批处理文件制作另一个带有括号的批处理文件
set brackleft ="("
set brackright =")"
@(
echo @echo off
echo if exist exp.txt %brackleft%
echo goto a
echo %brackright% else %brackleft%
echo echo Bye
echo pause
echo %brackleft%
echo pause
echo :a
echo echo Hi
echo pause
) > Test.bat
但是,当我右键单击并编辑新批处理文件时,会出现
@echo off
if exist exp.txt
goto a
else
echo Bye
pause
ECHO is off.
pause
:a
echo Hi
pause
答案 0 :(得分:0)
注意:
rem ↓ this space is harmful creates %brackleft % variable instead of %brackleft%
set brackleft ="("
set brackright =")"
rem ↑ this space is harmful as well: creates %brackright % variable
rem ↑
让我们删除那些有害的空间:
set brackleft="("
set brackright=")"
然后,echo %brackright% else %brackleft%
会产生")" else "("
。
您需要使用^(
作为^)
和^
的下一个语法;此外,set "brackleft=^("
set "brackright=^)"
插入符也应该被转义(参见双引号的位置):
#sequence li {
background-position: center !important;
}
答案 1 :(得分:-1)
set brackleft ="("
set brackright =")"
您创建了一个名为“brackleft”和“brackright”的变量(注意尾随空格)。
变量名或字符串周围的任何额外空格都不会被忽略,SET不像许多其他脚本语言那样容忍额外的空格。
来源set
注意:
=
。"
s(否则它们将被echo
修改)(
和)
,以便echo
稍后才能使用。 ^^
用于制作单个^
转义字符。^^^
来逃避现有代码块中的(
或)
。echo %brackleft%
应该是echo %brackright%
,否则您的括号不匹配。所以代码变成:
set brackleft=^^^(
set brackright=^^^)
更正了批处理文件:
set brackleft=^^^(
set brackright=^^^)
@(
echo @echo off
echo if exist exp.txt %brackleft%
echo goto a
echo %brackright% else %brackleft%
echo echo Bye
echo pause
echo %brackright%
echo pause
echo :a
echo echo Hi
echo pause
) > Test.bat
输出:
F:\test>type Test.bat
@echo off
if exist exp.txt (
goto a
) else (
echo Bye
pause
)
pause
:a
echo Hi
pause