Batch file 如何修复嵌套在if语句中的Echo命令
我正在尝试创建一个脚本,该脚本将创建另一个批处理脚本。但是,此代码将无法正常运行,一旦计算了if语句,就会立即退出Batch file 如何修复嵌套在if语句中的Echo命令,batch-file,cmd,Batch File,Cmd,我正在尝试创建一个脚本,该脚本将创建另一个批处理脚本。但是,此代码将无法正常运行,一旦计算了if语句,就会立即退出 set yes=yes pause IF /I %yes% == yes ( ECHO REM Music>>mf.bat ECHO FOR /f %%i in (C:\CopyToRoot\MusicFileAndLocation.txt) do set MusicFile=%%i>>mf.bat )` 但是,如果if语句中的
set yes=yes
pause
IF /I %yes% == yes (
ECHO REM Music>>mf.bat
ECHO FOR /f %%i in (C:\CopyToRoot\MusicFileAndLocation.txt) do set MusicFile=%%i>>mf.bat
)`
但是,如果if语句中的第二行被删除,代码将毫无问题地执行
我做错了什么?echo语句有什么地方我遗漏了吗?您需要稍微努力格式化代码块,但是,去掉代码块并简单地调用标签要简单得多。此外,批处理文件将使用%值,因此您需要将它们加倍,以便将字符串正确重定向到文件
@echo off
set yes=yes
pause
IF /I "%yes%"=="yes" call :final
goto :eof
:final
echo REM Music>mf.bat
echo FOR /f %%%%i in (C:\CopyToRoot\MusicFileAndLocation.txt) do set MusicFile=%%%%i>>mf.bat
注意:我在第一行rem上使用单重定向来覆盖文件,否则每次运行代码时它都会追加,如果这是有意的,只需执行双重定向>>也许:
@回音
设置是=是
暂停
如果/I%yes%==yes
>巴特博士
回声@回声关闭
回声Rem音乐
C:\CopyToRoot\MusicFileAndLocation.txt^Do Set MusicFile=%%%A中/F UseBackQ Delims=%%%A的回声
将百分比翻倍,并转义任何内部的右括号。这起作用了,似乎插入符号是我的代码中缺少的。当我补充说,它的功能如预期。