Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理以合并没有标题的文件_Batch File - Fatal编程技术网

Batch file 批处理以合并没有标题的文件

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"

我正在处理一个批处理文件,将多个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"
            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脚本中加倍
%