这是我的批处理脚本,用于读取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'被打印两次。 谁能告诉我为什么最后一行执行两次?
答案 0 :(得分:1)
你需要添加一行goto:eof,因为你在完成FOR循环后会进入子程序。
CALL :PROCESS
)
GOTO :eof
你还应该添加GOTO:eof作为最后一行:PROCESS。是的,现在可以使用了,但是如果有人在以后添加你的代码,事情将无法正常工作。