我正在尝试批量制作游戏的mod加载程序,但是我无法使用嵌套循环。
使用的命令是loadMods.bat mod1.txt mod2.txt ... modN.txt
这是我正在使用的代码
setlocal EnableDelayedExpansion
set /p outputFile="Output File:"
for %%x in (%*) do (
echo Applying mod from file %%x
for /f "delims=" %%y in (%%x) do echo %%y >> %fileOutput%
)
echo Finished.
pause
第二个循环工作正常,如果它在第一个循环之外,但是当我使用嵌套循环时,我在第二个循环上得到The syntax of the command is incorrect.
错误。
答案 0 :(得分:2)
正如@SomethingDark所说,这是由一个简单的印刷问题引起的。
for /f "delims=" %%y in (%%x) do echo %%y >> %fileOutput%
变量fileoutput
未定义,使CMD.EXE
看到:
for /f "delims=" %%y in (%%x) do echo %%y >>
并且在>>
之后找不到参数,导致错误。
顺便说一下,在调试批处理文件时,我建议:
@echo off
CMD.exe
这些方法准确显示哪些命令出错,使调试更容易。
答案 1 :(得分:1)
由于您似乎只是将多个文件的内容复制到单个输出文件中,因此您可以稍微简化一下。
@Echo Off
If "%~1"=="" Exit/B
Set/P "outputFile= Output File: "
Type %* 2>Nul >"%outputFile%"
Echo( Finished.
Pause
确保任何传递的参数和输入字符串的有效性是您的责任。
您甚至可以绕过输入参数:
@Echo Off
Set/P "outputFile= Output File: "
Type mod*.txt 2>Nul >"%outputFile%"
Echo( Finished.
Pause