我有一个 .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