2017-03-08 43 views
0

下面是我的代码,我不能够打印在Windows批处理文件存储从CSV提取的值文件中的变量无法打印在Windows批处理文件存储从CSV提取的值文件中的变量

@echo off 
    Set _InputFile=D:\TH_Scripts\InputParamTest.csv 
    for /F "usebackq tokens=* delims=" %%A in (%_InputFile%) do (
     set the_line=%%A 
     goto process_line 
    ) 

    :process_line 
    echo i am here 
    pause 
    for /F "usebackq tokens=1,2,3,4,5,6,7 delims=[,]" %%1 in (%the_line%) do (
     set hexcode=%%1 
     set country=%%2 
     set reg=%%3 
     set owner=%%4 
     set callsign=%%5 
     set planetype=%%6 
     set model=%%7 
     set THISLINE=%hexcode%,%country%,%reg%,%owner%,%callsign%,%planetype%,%model% 
     echo %THISLINE% > %THEOUTPUTFILE% 
    pause 
    ) 

回答

0
  1. for /F "usebackq tokens=1,2,3,4,5,6,7 delims=[,]" %%1 in (%the_line%) do (

%%数量不受批次语法的支持。 %n表示“程序的第n个参数”。

更改%%1%%a。分配的变量为%%a,%%b等至%%g注意事项很重要。 %%a可以%%i如果你喜欢 - 提取,然后分配给%%i值.. %%o

2.

你需要搜索无数的文章在delayed expansion上SO。代码块(括号内的一系列指令)中的值%var%将是变量在遇到代码块时所具有的值 - 而不是该值在块中变化(“运行时”值)

要提取运行时的值,则需要通过执行setlocal enabledelayedexpansion指令(初始@echo off后通常直接完成)首先调用delayedexpansion模式,然后通过使用!var!访问变量的运行时间值。

  • 话虽如此,除非你实际使用您在块中建立变量,使用%%a可以直接输出列表等,不%hexcode%!hexcode!。没有关于你打算如何在其他地方使用这些变量的进一步信息,这可能会或可能不会对你的情况有用。

  • 顺便说一句 - 1,2,3 ...不是不正确的语法,但1-7更短,在这种情况下意味着相同。

    相关问题