我目前使用
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 文件。
您的条件检查本质上是正确的,但 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