csv - 使用批处理文件替换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
解决方案
- 仅选择一个标记,您将仅获得一列 (%%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
推荐阅读
- mysql - 在 MySQL 错误 1442 中执行触发器的问题
- apache-camel - 带有交换和路由键的骆驼 amqp uri
- php - 使用 unoconv 将 .csv 文件转换为 .xls 时缺少标题
- azure - 是否可以从 docker compose 卷中指定文件夹路径?
- sql - sql中的按位运算
- postgresql - psycopg2.errors.UndefinedColumn:列已排除。编号不存在
- video - 为用户跟踪和保存视频进度
- java - 当 Activity Swipe 上的 CardStackView 时如何停止适配器上的 MediaPlayer?
- c# - C# 控制台应用程序不会在其他人的计算机上运行
- html - How to Create Date Count timer selecting date from the date picker input and show the difference of selected date to current date