已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
4天前关闭。
Improve this question
首先,我遇到了一些不同的帖子与这种类型的问题有关,但这些解决方案都没有真正解决我的问题。
我无法更改系统导出所需.CSV文件的方式。
如果可能的话,我想运行一个.bat文件,纠正每个.csv文件在一个特定的目录,并保存一个新的文件与existingname_new.csv
1)CSV的每个记录的前9个字段为空。“A到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”或“INTR”的任何记录,“J”列包含数字“0000012345”、“JKL”或“INTR”
link上述解决方案将特定字段复制到新文件中,但当尝试使用两位数(如%10,%11,%12)时,它不会重新识别两位数“%10”,它会看到“%1”并将O添加到数据中。
该解决方案也不会根据需要删除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"
)
1条答案
按热度按时间gzjq41n41#
for
将连续的分隔符视为一个,因此很容易删除前导空行。我不会把删除行的负担放在for
循环中,因为它很容易预先过滤行:输出示例数据:
目前还不清楚您是要删除“任何包含
INT
的行”还是“任何包含INTR
的行”。如果是第二个,请将\"INT.*\"
替换为\"INTR\"
(\"
是转义引号,用于告诉findstr
搜索文字引号)