我有一份附有发票数据的CSV,例如:
该CSV将有不同数量的每张发票,其中涉及发票产品线,这可能跨越多个发票号码。
我需要能够运行一个批处理文件来查看这个CSV,并根据Col A-In发金额#中的值拆分成多个CSV。
例:
.bat应该运行并将CSV分成两个单独的CSV:
CSV1:
CSV2:
让软件安装在我的服务器上将是一个麻烦-因此,如果有这样的话,这是可以做到的,而不必安装软件,这将使我非常高兴。
我很感谢之前也有类似的问题--但是,我还没能找出是否有另一个脚本可以不安装Awk而运行。
问候瑞克
发布于 2015-12-21 09:05:40
@ECHO OFF
SETLOCAL
SET "destdir=u:\test"
MD "%destdir%" 2>nul
FOR /f "tokens=1*delims=" %%a IN (
'dir /b /a-d /o-d "%destdir%\NewsxpressInvoices_*.csv" ' ) DO (
set "sourcefile=%%a"
goto havefile)
:havefile
FOR /f "delims=" %%a IN (%destdir%\%sourcefile%) DO (
FOR /f "tokens=1delims=," %%x IN ("%%a") DO (
>>"%destdir%\inv%%x.csv" ECHO(%%a
)
)
GOTO :EOF您需要更改destdir的设置以适应您的情况。
我在测试中使用了一个名为q34388332.txt的文件,其中包含了您的数据。
生产u:*invoicenumber*.csv
修改后,包含了查找-最新-新闻-新闻媒体的声音_*..csv文件作为sourcefile取代了q34388332.txt测试文件
[再次编辑以包含显式的目录名“
建议:对源和目标目录名称使用不同的变量,以防以后更改它们。]
发布于 2015-12-21 12:47:47
此解决方案假定输入文件按发票#排序:
@echo off
setlocal EnableDelayedExpansion
set /A n=0, invoice=0
for /F "tokens=1* delims=," %%a in (input.csv) do (
rem Get the number of output file based on Invoice #
set /A "n+=(invoice-%%a>>31)&1, invoice=%%a"
rem Output this line to proper file
>> output!n!.csv echo %%a,%%b
)https://stackoverflow.com/questions/34388332
复制相似问题