无法在存储CSV文件中提取的值的Windows批处理文件中打印变量

时间:2017-03-08 09:55:06

标签: file batch-file

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

 @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
    )

1 个答案:

答案 0 :(得分:0)

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

  2. 批处理语法不支持

    %%数字。 %n表示"过程的第n个参数"。

    %%1更改为%%a。然后,分配的变量是%%a%%b等。%%g注意案例很重要。如果您愿意,%%a可以是%%i - 然后将提取的值分配给%%i .. %%o

    2

    您需要在delayed expansion上搜索无数文章。代码块(带括号的系列指令)中%var%的值将是变量在遇到代码块时的值 - 值,因为它在块中变化("运行时"值)

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

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

    2. BTW - 1,2,3 ...语法不正确,但1-7更短,在这种情况下意味着相同。