未在for循环中清除输出缓冲区

我正在编写一个程序,该程序从CSV文件读取主机和IP列表,该文件根据列的值运行不同的代码。但是,将结果输出到文件时,参数似乎没有刷新。

CSV文件(test.csv)

Name,FieldA,FieldB,PrimaryIP,SecondaryIP,Type,ObjA,ABC,DEF,10.1.1.2,Primary,ObjB,GHI,JKL,10.1.1.3,10.1.2.2,Secondary

批处理脚本(loop.bat) 使用loop.bat test.csv在CMD中运行

FOR /F "skip=1 tokens=1-6 delims=," %%A IN (%1) DO (    

    if %%F == "Primary" do
    (
        echo Name is %%A
        echo Primary IP is %%D
    )>Primary.txt

    if %%F == "Secondary" do
    (
        echo name is %%A
        echo Primary IP is %%D and Secondary IP is %%E
    )>Secondary.txt


    )

Primary.txt的输出 Primary.txt应该是IP为10.1.1.2的ObjA

name is ObjB
Primary IP is 10.1.1.3

Secondary.txt的输出 虽然secondary.txt输出正确无误

name is ObjB
Primary IP is 10.1.1.3 and Secondary IP is 10.1.2.2
abcd_219616 回答:未在for循环中清除输出缓冲区

这里有多个问题:

  1. 您的CSV格式有误,在ObjA行中缺少逗号,此外,您还应在每行中省略最后一个逗号:

    >0
  2. 两个连续的逗号不起作用(请参见batch-file-tokens-ignore-empty-delimiters)。

  3. Name,FieldA,FieldB,PrimaryIP,SecondaryIP,Type ObjA,ABC,DEF,10.1.1.2,[NULL],Primary ObjB,GHI,JKL,10.1.1.3,10.1.2.2,Secondary 条件不起作用,您需要将其用引号引起来。
  4. if语法错误,您必须清除if

    do

总结一下:

if "%%F" == "Primary" (
Name,Secondary
本文链接:https://www.f2er.com/3139290.html

大家都在问