如何创建批处理文件以将“END”添加到 .csv 文件的最后一行

如何创建批处理文件以将“END”添加到 .csv 文件的最后一行

我有一个每天运行的流程,从我们的 POS 系统中提取零售交易,并将其输出为 .csv 文件。然后我们将文件发送到我们的会计部门,他们在那里处理数据以导入另一个系统。他们问我是否可以在最后一行交易后添加单词“END”,这样他们就可以使用脚本来确定文件的所有内容是否已正确导入

我希望能够使用批处理文件附加现有文件而不创建它的副本,因为我们的文件名特定于每个创建的日期

这是示例数据。由于它是一个.csv 文件,我假设需要在末尾添加一行?

DATASET|HOST|HOSTSERVER|LOCATION|PERIOD|REGISTERNUMBER|CASHIERUSERNAME|SESSIONID|SESSIONSTARTDATETIME|SESSIONENDDATETIME|TRANSACTIONID|TRANSACTIONNUMBER|TRANSACTIONDATETIME|TRANSACTIONDATE|DATEKEY|TRANSACTIONTIMEINSECONDS|TRANSACTIONTYPE|FIRSTPAYMENTTYPE|FIRSTPAYMENTAMOUNT|FIRSTPAYMENTCARDTYPE|FIRSTPAYMENTACCOUNT|FIRSTPAYMENTACCOUNTNUMBER|FIRSTPAYMENTEMPLOYEEID|FIRSTPAYMENTCHARGEACCOUNTGROUP|SECONDPAYMENTTYPE|SECONDPAYMENTAMOUNT|SECONDPAYMENTCARDTYPE|SECONDPAYMENTACCOUNT|SECONDPAYMENTACCOUNTNUMBER|SECONDPAYMENTEMPLOYEEID|SECONDPAYMENTCHARGEACCOUNTGROUP|DISCOUNTPERCENTAGE|DISCOUNTDESCRIPTION|DISCOUNTAMOUNT|SURCHARGEPERCENTAGE|SURCHARGEDESCRIPTION|SURCHARGEAMOUNT|COUPONUSEDAMOUNT|COUPONAMOUNT|COUPONDISCAMOUNT|COUPONDESCRIPTION|VOIDAMOUNT|REWARDDESCRIPTION|REWARDAMOUNT|TAXAMOUNT|TAXDIFF|GROSSSALESCOUNT|GROSSSALESAMOUNT
IHC_TST|HSADMIN|LPV-COMPTDEV01.CO.IHC.COM|Master|Breakfast|2|ldbevans|48|2022-01-21 08:21:00|2022-01-21 11:46:27|92|000100002220121082100|2022-01-21 08:21:00|2022-01-21|20220121|32|Void||0|||||||0||||||||0|||0|0|0|0||11.13||0|0|0|0|0
IHC_TST|HSADMIN|LPV-COMPTDEV01.CO.IHC.COM|Master|Breakfast|2|ldbevans|48|2022-01-21 08:21:00|2022-01-21 11:46:27|93|000100002220121085529|2022-01-21 08:55:29|2022-01-21|20220121|17|Void||0|||||||0||||||||0|||0|0|0|0||16.07||0|0|0|0|0
IHC_TST|HSADMIN|LPV-COMPTDEV01.CO.IHC.COM|Master|Breakfast|2|ldbevans|48|2022-01-21 08:21:00|2022-01-21 11:46:27|94|000100002220121091317|2022-01-21 09:13:17|2022-01-21|20220121|48|Void||0|||||||0||||||||0|||0|0|0|0||0.99||0|0|0|0|0
IHC_TST|HSADMIN|LPV-COMPTDEV01.CO.IHC.COM|Master|Lunch|2|ldbevans|49|2022-01-21 11:47:26|2022-01-21 11:47:26|95|000100002220121114726|2022-01-21 11:47:26|2022-01-21|20220121|36|Sale Cash|Cash|0|||||||0||||||||0|||0|5.98|7|0|PrePaid Voucher $7|0||0|0|0|1|5.98

我在 Windows 2016 服务器上运行此过程

答案1

你试一试:

在命令行中:

> for /f usebackqˆdelimsˆ= %i in (`type .\"your_file.csv"`)do @echo.%~iˆ|END>>.\"your_file_END.csv"

> move /y .\"your_file_END.csv" .\"your_file.csv"


在批处理文件中:

@echo off 

for /f usebackqˆdelimsˆ= %%i in (`type .\"your_file.csv"
    `)do echo.%%~iˆ|END>>.\"your_file_END.csv"

move /y .\"your_file_END.csv" .\"your_file.csv"


如果需要跳过标题:

@echo off && setlocal EnableDelayedExpansion

for /f usebackqˆdelimsˆ= %%i in (`type .\"file.csv"
    `)do echo."%%~i"|findstr/b ".DATASET" >nul && (
            echo.%%~i>>.\"your_file_END.csv" ) || (
            echo.%%~iˆ|END>>.\"your_file_END.csv" )

move /y .\"your_file_END.csv" .\"your_file.csv"

endlocal 

相关内容