以下是我的代码,我无法在存储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
)
答案 0 :(得分:0)
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
上搜索无数文章。代码块(带括号的系列指令)中%var%
的值将是变量在遇到代码块时的值 - 不值,因为它在块中变化("运行时"值)
要提取运行时值,您需要首先通过执行delayedexpansion
指令调用setlocal enabledelayedexpansion
模式(通常直接在初始@echo off
之后完成),然后访问运行时 - 使用!var!
确定变量的时间值。
话虽如此,除非您实际使用的是在块中建立的变量,否则您可以使用%%a
等直接输出列表,而不是%hexcode%
或{{1 }}。如果没有关于您打算如何在其他地方使用这些变量的进一步信息,这可能对您的情况有用,也可能没用。
BTW - 1,2,3 ...语法不正确,但1-7更短,在这种情况下意味着相同。