满足条件后合并2个文件

问题描述 投票:0回答:1

我目前使用

rename.bat
合并 csv 文件,该文件放置在保存这些 csv 文件的目录中并执行。

生成的文件是由一组不断从外部源导入的文件创建的。

copy *.csv Pal.ORD.txt /b && del * .csv && ren *.txt *.csv

问题是,如果生成的文件没有被扫描,那么我会将合并的文件放在一个核心文件中,并且出现新的单独文件,并且代码不会将它们全部合并。

我正在考虑做出改进,例如:

IF EXIST PAL.ORD.CSV (copy *.csv Pal.ORD.txt /b && del * .csv && ren *.txt *.csv /EXCLUDE: PAL.ORD.CSV)
ELSE (copy *.csv Pal.ORD.txt /b && del * .csv && ren *.txt *.csv)

这个新代码的问题是我不确定语法是否正确,(我也不知道将

EXCLUDE
放在哪里,只是不要将主核心文件与新的单独文件融合)我还有一个问题需要解决:合并创建的两个最终文件。

我还应该在

type  *.csv > concat_csv.txt
末尾加上
IF EXIST
吗?这也会给读取要导入的文件的应用程序带来问题,因为它只允许 csv 文件。

if-statement batch-file merge
1个回答
0
投票

您的条件检查本质上是正确的,但 Batch 不支持您使用的 /EXCLUDE 选项。您的核心文件(PAL.ORD.CSV)需要从删除操作中排除,以防止每次错误地合并它。

@echo off
setlocal

if exist PAL.ORD.CSV (
    for %%F in (*.csv) do if /I not "%%F"=="PAL.ORD.CSV" copy /b "%%F"+PAL.ORD.TXT PAL.ORD.TXT >nul
    for %%F in (*.csv) do if /I not "%%F"=="PAL.ORD.CSV" del "%%F"
    ren PAL.ORD.TXT PAL.ORD.CSV
) else (
    copy *.csv PAL.ORD.TXT /b
    del *.csv
    ren PAL.ORD.TXT PAL.ORD.CSV
)

endlocal
© www.soinside.com 2019 - 2024. All rights reserved.