Batch file 如何修复嵌套在if语句中的Echo命令

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语句中的

我正在尝试创建一个脚本,该脚本将创建另一个批处理脚本。但是,此代码将无法正常运行,一旦计算了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的回声
将百分比翻倍,并转义任何内部的右括号。

这起作用了,似乎插入符号是我的代码中缺少的。当我补充说,它的功能如预期。