批处理文件帮助:无法将从 .csv 文件解析的值存储到变量

批处理文件帮助:无法将从 .csv 文件解析的值存储到变量

我有一个 .CSV(逗号分隔)文件,我需要从中提取特定列的值,然后需要对这些值进行子字符串化。子字符串值应写入输出文件中。

但是,当我尝试将 set 语句放入 for /f 循环中时,值没有存储在变量中,导致子字符串无法按预期工作。

请参阅以下代码片段并提供建议:

-假设 abcdefgh 是 %%d 处的值

SETLOCAL ENABLEDELAYEDEXPANSION    
for /F "usebackqtokens=1-4*delims=^," %%a in (temp.csv) do (
echo %%d
set _id=%%d
echo _clnt: %!_id!:~5,3%
echo %%a,%%b,%%c,!_clnt! >> output.csv
)

上面的输出:

abcdefgh
_clnt: ~5,3

预期输出:

abcdefgh
_clnt: fgh

答案1

这对我有用

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION    
for /F "usebackqtokens=1-4*delims=^," %%a in (temp.csv) do (
echo %%d
set id=%%d
set _clnt=!_id:~5,3!
echo _clnt: !_clnt!
echo %%a,%%b,%%c,!_clnt! >> output.csv
)

temp.csv 的内容

x,y,z,abcdefgh

批处理脚本的控制台输出:

abcdefgh
_clnt: fgh

运行批处理脚本后的output.csv内容:

x,y,z,fgh

相关内容