使用 .BAT 文件删除 .CSV 的字段和记录

问题描述 投票:0回答:1

首先,我遇到了一些与此类问题相关的不同帖子,但这些解决方案都没有真正解决我的问题。

我无法更改我的系统导出所需 .CSV 文件的方式。

如果可能的话,我想运行一个 .bat 文件来更正特定目录中的每个 .csv 文件,并使用 existingname_new.csv 保存一个新文件

1).CSV 的每条记录前 9 个字段为空白。 “A to I”(希望将这些删除。) 我们文件中的数据以“J”开头,我们需要它是“A”

样本记录:(数据已更改为保密)

,,,,,,,,,"0000012345",1/1/2021,"000023456","Metal Machine Vendor A",,"1,000.00",,,,,,,,,,,,,,,,,
,,,,,,,,,"JKL",1/1/2021,"000023457","Metal Machine Vendor B",,"1,000.00",,,,,,,,,,,,,,,,
,,,,,,,,,"INTR",1/1/2021,"000023458","Metal Machine Vendor C",,"1,000.00",,,,,,,,,,,,,,,,

2)删除任何包含“JKL”或“INT”的记录 在上面的示例记录中,“J”列包含数字“0000012345”、“JCK”或“INTR”

链接 上面的解决方案将特定字段复制到新文件,但在尝试使用像 %10、%11、%12 这样的两位数时 它不会将两位数重新识别为“%10”,它会看到“%1”并将 O 添加到数据中。

此解决方案也不会根据需要删除 JKL 或 INTR 行。

任何帮助将不胜感激。

csv batch-file
1个回答
0
投票

for
将连续的分隔符视为一个分隔符,因此很容易删除前导空行。当事先很容易过滤行时,我不会把删除行的负担放在
for
循环中:

for /f "tokens=* delims=," %%a in ('findstr /rv "\"JKL\" \"INT.*\"" t.csv') do @echo %%a

输出样本数据:

"0000012345",1/1/2021,"000023456","Metal Machine Vendor A",,"1,000.00",,,,,,,,,,,,,,,,,
© www.soinside.com 2019 - 2024. All rights reserved.