首先,我遇到了一些与此类问题相关的不同帖子,但这些解决方案都没有真正解决我的问题。
我无法更改我的系统导出所需 .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 行。
任何帮助将不胜感激。
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",,,,,,,,,,,,,,,,,