批量嵌套循环不起作用

时间:2017-06-24 14:19:50

标签: batch-file nested-loops

我正在尝试批量制作游戏的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.错误。

2 个答案:

答案 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