Batch file 批处理以合并没有标题的文件
我正在处理一个批处理文件,将多个csv文件合并成一个更大的文件,同时删除标题行 它可以工作,但不会合并目录中的所有csv文件。例如,如果我有4个csv文件,它将只合并前两个 代码如下:Batch file 批处理以合并没有标题的文件,batch-file,Batch File,我正在处理一个批处理文件,将多个csv文件合并成一个更大的文件,同时删除标题行 它可以工作,但不会合并目录中的所有csv文件。例如,如果我有4个csv文件,它将只合并前两个 代码如下: @echo off cd "C:\TheFileDirectory" setlocal set first=1 >bigfile.csv. ( for %%F in (*.csv) do ( if defined first ( type "%%F"
@echo off
cd "C:\TheFileDirectory"
setlocal
set first=1
>bigfile.csv. (
for %%F in (*.csv) do (
if defined first (
type "%%F"
set "first="
) else more +1 "%%F"
)
)
不同的方法:
对所有*.csv文件执行FOR循环
跳过第一行时,对CSV文件的所有行执行FOR循环
回显CSV文件的行并使用>>将输出重定向到bigfile。您可以尝试将输出转储到
bigfile.new
,然后在循环结束时ren bigfile.new bigfile.CSV
。我想知道您的for
循环是否在其集合中包含了bigfile.csv,并在尝试将自身附加到自身时造成了问题。@rojo想得太好了!只是试了一下,仍然有问题。你的CSV文件大吗?我认为64k的更多的有一个大小限制,但我可能记错了。如果您的第二个csv文件超过64k,可能这就是导致您的脚本死亡的原因(尽管我希望输出会截断文件并继续循环)。如果所有其他操作都失败,则可以使用PowerShell代码段powershell“$i=1;gci*.csv |%{if($i){$i=0;gc$}else{gc$| select-skip 1}}}”>out&renout.csv
,或者在.bat脚本中加倍%
。