用于编辑程序输入文件的批处理脚本

时间:2016-11-29 20:15:59

标签: loops batch-file for-loop

我正在尝试编写一个脚本,该脚本将使用不同的参数编辑输入文件并运行使用该输入文件的程序。我想做200多次跑步。我编写了一个成功运行的代码,但是当我尝试将相同的代码放在FOR循环中时,它不起作用。

这是一次运行良好的迭代代码

@echo
set "file=Current.hot"
set /a isoLine#ToSearch=67
set /a sourceLine#ToSearch=68

set sourceList[0]=SourceTerm = 300
set isoList[0]=SourceTermName = a
set fileList[0]=a

set sourceList[1]=SourceTerm = 30
set isoList[1]=SourceTermName = ab
set fileList[1]=ab

set sourceList[2]=SourceTerm = 3
set isoList[2]=SourceTermName = ac
set fileList[2]=ac

set sourceList[3]=SourceTerm = .3
set isoList[3]=SourceTermName = ad
set fileList[3]=ad


(FOR /f "tokens=1*delims=:" %%a IN ('findstr /n "^" "%file%"') DO (
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET "Line=%%b"
    IF %%a equ %isoLine#ToSearch% SET "Line=!isoList[3]!"
    IF %%a equ %sourceLine#ToSearch% SET "Line=!sourceList[3]!"
    ECHO !Line!
    ENDLOCAL
))>"%file%.new"
TYPE "%file%.new"
MOVE "%file%.new" "%file%"


setlocal enabledelayedexpansion
cd C:\Program Files (x86)\HotSpot 3.0.3
start Hotspot303.exe
timeout /t 4
ren Current.out !fileList[3]!.txt

现在这里是我尝试将其变成循环的相同代码。

@echo off 

set "file=Current.hot"
set /a isoLine#ToSearch=67
set /a sourceLine#ToSearch=68

set sourceList[0]=SourceTerm = 300
set isoList[0]=SourceTermName = a
set fileList[0]=a

set sourceList[1]=SourceTerm = 30
set isoList[1]=SourceTermName = ab
set fileList[1]=ab

set sourceList[2]=SourceTerm = 3
set isoList[2]=SourceTermName = ac
set fileList[2]=ac

set sourceList[3]=SourceTerm = .3
set isoList[3]=SourceTermName = ad
set fileList[3]=ad

(for /l %%k in (0,1,3 ) do (    
    (FOR /f "tokens=1*delims=:" %%a IN ('findstr /n "^" "%file%"') DO (
        SETLOCAL ENABLEDELAYEDEXPANSION
        SET "Line=%%b"
        IF %%a equ %isoLine#ToSearch% SET "Line=!isoList[%%k]!"
        IF %%a equ %sourceLine#ToSearch% SET "Line=!sourceList[%%k]!"
        ECHO !Line!
        ENDLOCAL
    ))>"%file%.new"
    TYPE "%file%.new"
    MOVE "%file%.new" "%file%"


    setlocal enabledelayedexpansion
    cd C:\Program Files (x86)\HotSpot 3.0.3
    start Hotspot303.exe
    timeout /t 4
    ren Current.out !fileList[%%k]!.txt
))

关于为什么在放入循环时停止工作的任何想法?

由于

0 个答案:

没有答案