2017-03-08 27 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更短,在這種情況下意味着相同。

    相關問題