首页 > 解决方案 > 使用批处理文件替换csv文件中的字符串

问题描述

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

@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

标签: csvbatch-file

解决方案


  • 仅选择一个标记,您将仅获得一列 (%%h)
  • 直接解析more命令,不需要临时文件。
  • 根据要替换的整数数量,您可以使用带有 int 作为索引/指针的伪数组。
  • 您可以单独获取所有列(tokens=1-18, %%A..%%R),也可以将其余列集中*在一个变量中。

@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

推荐阅读