我有一个每天运行的流程,从我们的 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