Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用批处理文件替换csv文件中的字符串_Csv_Batch File - Fatal编程技术网

使用批处理文件替换csv文件中的字符串

使用批处理文件替换csv文件中的字符串,csv,batch-file,Csv,Batch File,我有一个有18个字段的csv文件。我需要将文件复制到txt文件,删除前四行,替换字段#8中的数据,并用新名称保存文件。 字段#8中的数据是一个整数(例如,1、2、3等)。每个整数都需要用单独的值替换(例如,我需要用1005替换1,用1008替换3)。我正在尝试修改/修复以下批处理文件: @echo off More +4 datatest.csv > datacopy.txt ( FOR /f "tokens=8 delims=," %%h in (datacopy.txt) do (

我有一个有18个字段的csv文件。我需要将文件复制到txt文件,删除前四行,替换字段#8中的数据,并用新名称保存文件。
字段#8中的数据是一个整数(例如,1、2、3等)。每个整数都需要用单独的值替换(例如,我需要用1005替换1,用1008替换3)。我正在尝试修改/修复以下批处理文件:

@echo off
More +4 datatest.csv > datacopy.txt
( FOR /f "tokens=8 delims=," %%h in (datacopy.txt) do (
    if "%%h"=="3" (echo 1008) else ( 
      echo %%a %%b %%c`  echo %%a %%b %%c
    ) 
  )
)>paygoinvoice.txt
@echo on
  • 如果只选择了一个标记,则只会得到一列(%%h)
  • 直接解析more命令时,不需要临时文件
  • 根据要替换的整数数量,可以使用带有int的伪数组作为索引/指针
  • 您可以分别获取所有列(
    tokens=1-18
    %%A..%%R
    ),也可以将其余的
    *
    集中到一个变量中


有些数据(不是全部)用引号括起来。是否有一种方法来修改批处理文件以删除所有引文?删除(外部)双引号,使用<代码> > /代码>倾斜修改器,例如“代码> %%~A /代码>等。如果答案解决了您的问题,或者您发现它有帮助,您应该考虑和/或绿色复选标记是“接受”?我试着投赞成票,但因为我是一个新用户,我不认为它记录了我的投票。我感谢你的帮助!是的,但您可能需要等待一段时间才能启用它。
@echo off & Setlocal EnableDelayedExpansion
( FOR /f "tokens=1-8* delims=," %%A in ('More +4 datatest.csv') do (
    Set "H=%%H"
    if "%%H"=="1" Set "H=1005"
    if "%%H"=="3" Set "H=1008"
    echo %%A,%%B,%%C,...,!H!,%%I
  )
)>paygoinvoice.txt
@echo on