关于for循环的批处理脚本查询

时间:2014-06-03 09:12:43

标签: batch-file csv

这是我的批处理脚本,用于读取csv文件并将值分配给批处理变量。 这个脚本完美地读取文件,但是当涉及到csv文件的最后一行时......最后一行执行两次。我没有得到最后一行读两次的原因。 以下是我的批次代码

@echo off

:: Set input file in _variable
Set _InputFile=%1

:: Store input line into different _variables
FOR /F "tokens=1-4* delims=," %%A IN (%_InputFile%) DO (
    Set _var1=%%A
    Set _var2=%%B
    Set _var3=%%C
    Set _var4=%%D
CALL :PROCESS
)

:PROCESS
IF "%_var1%"=="Application Name" echo FIRST LINE
IF "%_var1%"=="Transition Portal" echo %_var2%
IF "%_var1%"=="Coast" echo %_var2%
IF "%_var1%"=="TI" echo %_var2%

这是我的csv文件:

Application Name,Environment,Release No.,Revision No.

Transition Portal,Test,,

Coast,Dev,handle,0

TI,Prod,check,3

我得到的输出是:

FIRST LINE

Test

Dev

Prod

Prod

如果您注意到'Prod'被打印两次。 谁能告诉我为什么最后一行执行两次?

1 个答案:

答案 0 :(得分:1)

你需要添加一行goto:eof,因为你在完成FOR循环后会进入子程序。

CALL :PROCESS
)
GOTO :eof

你还应该添加GOTO:eof作为最后一行:PROCESS。是的,现在可以使用了,但是如果有人在以后添加你的代码,事情将无法正常工作。