bat 文件将列数据复制到 csv 中的另一列

bat 文件将列数据复制到 csv 中的另一列

我的 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% 是我添加您要查找的文件名的地方。

相关内容