我的 csv 文件包含 6 列,我想将第 6 列的值复制到第一列路径值中。
Path,Firstname,Lastname,Name,Description,Images
C:\Users\magoo\abc.jpg,alex,ross,pvs,data,123.jpg
C:\Users\magoo\pqr.jpg,kris,ward,poi,data,784.jpg
我正在寻找的输出
Path,Firstname,Lastname,Name,Description,Images
C:\Users\magoo\123.jpg,alex,ross,pvs,data,123.jpg
C:\Users\magoo\784.jpg,kris,ward,poi,data,784.jpg
我只想用第 6 列值替换第一个路径列中的图像名称。
请帮忙,因为我在这里卡了很久。我正在使用复制命令,但它替换了第一列中的整个文本。
我尝试过的代码:
@ECHO OFF
SETLOCAL
( FOR /f "tokens=1-6delims=," %%a IN (ImportFile.csv) DO (
ECHO(%%a%%f,%%b,%%c,%%d,%%e,%%f )
)>new.csv
GOTO :EOF
答案1
我刚刚写了这个,它删除了我的评论......然后我修复了一个错误:(
@echo off
Set Input_file=test.csv
Set Output_file=test_modified.csv
for /f "tokens=1-6 delims=," %%l in (%Input_file%) do call :process_tokens "%%l" "%%m" "%%n" "%%o" "%%p" "%%q"
goto :EOF
:process_tokens
Set Col2=%~2
Set Col3=%~3
Set Col4=%~4
Set Col5=%~5
Set Col6=%~6
Set Col1=%~dp1%Col6%
echo %Col1%,%Col2%,%Col3%,%Col4%,%Col5%,%Col6% >>%Output_file%
goto :EOF
我正在使用标签/功能来实现这一点。
在“:process_tokens”函数中,查看 %~dp2%Col6% 行。
%~dp1 表示:
- %~ = 获取传递的参数并从中去除引号。
- dp = 仅驱动器和路径(又称删除文件名)
- 1 = 传递参数 #1
%Col6% 是我添加您要查找的文件名的地方。