使用.bat文件删除.csv的字段和记录



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

我无法更改我的系统如何导出所需的。csv文件。

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

1) . csv的每条记录前9个字段为空。"A到i";(希望这些能被移除。)文件中的数据以" "开头,我们需要它是"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"或";INTR"在上面的示例记录中,列";J"包含数字"0000012345";JKL"或";INTR"

链接上面的解决方案将特定字段复制到新文件中,但当尝试使用双位数(如%10,%11,%12)时它不能识别双位数"%10"它看到"%1"并将0加到数据中。

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

任何帮助都将是非常感激的。

,,,,,,,,,12364,1/1/2023,30288,account name,,"1,000.00"
,,,,,,,,,12365,1/1/2023,30308,account name,,"1,000.00"
,,,,,,,,,12366,1/1/2023,30441,account name,,"1,000.00"
,,,,,,,,,12367,1/1/2023,30472,account name,,"1,000.00"
,,,,,,,,,12368,1/1/2023,30490,account name,,"1,000.00"
,,,,,,,,,12369,1/1/2023,31021,account name,,"1,000.00"
,,,,,,,,,ACH,1/1/2023,30070,account name,,"1,000.00"
,,,,,,,,,ACH,1/1/2023,30602,account name,,"1,000.00"
,,,,,,,,,ACH,1/1/2023,30092,account name,,"1,000.00"
,,,,,,,,,ACH,1/1/2023,31010,account name,,"1,000.00"
,,,,,,,,,WIRE,1/1/2023,30498,account name,,"1,000.00"
,,,,,,,,,WIRE,1/1/2023,31043,account name,,"1,000.00"
,,,,,,,,,WIRE,1/1/2023,30954,account name,,"1,000.00"

这是我当前使用的代码。它运行在"E:batch csv test"目录,创建一个新文件"existingname_New.csv)

For %%F in (*.csv) do ( 
(for /f "tokens=* delims=," %%a in ('findstr /rv ""ACH" "WIRE"" %%F') do @echo %%a)>"E:batch csv test%%~nF_New.csv"
)

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

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

带有示例数据的输出:

"0000012345",1/1/2021,"000023456","Metal Machine Vendor A",,"1,000.00",,,,,,,,,,,,,,,,,

不清楚是否要删除包含INT"的任何行。或"任何包含INTR的行"。如果是第二个,将"INT.*"替换为"INTR"("是一个转义引号,用于告诉findstr搜索字面引号)

相关内容

  • 没有找到相关文章

最新更新