如何合并来自不同子文件夹的多个CSV文件?

柏林

我知道这是一个常见问题,但是我遇到了一些错误,希望能有所帮助。

我想将多个子文件夹中的1000个csv文件合并为一个文件。脚本是在MainFolder和应通过子如运行01_201505_2015与CSV文件合并成的一个文件MainFolder

我有以下文件夹结构:

-MainFolder
    -01_2015
    -02_2015
    -03_2015
    -04_2015
    -05_2015

我正在使用的脚本(从此处获取):

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET SUMMARY_FILE=sumfile.csv
IF EXIST "%SUMMARY_FILE%" (DEL "%SUMMARY_FILE%")


SET /A LINE_COUNT=1

FOR /F "usebackq tokens=*" %%f IN (`DIR /S /B *.csv`) DO (
    FOR /F "usebackq tokens=*" %%s IN ("%%~f") DO (
        ECHO !LINE_COUNT!,%%s >>"%SUMMARY_FILE%"
        SET /A LINE_COUNT=!LINE_COUNT! + 1
    )
)
EXIT /B 0

它实际上正在运行超过1000个文件。但是文件不会合并。该怎么办?

莫菲

尝试以下经过稍微修改的代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
PUSHD "%~dp0"

SET "SUMMARY_FILE=sumfile.csv"
DEL /F "%SUMMARY_FILE%" 2>nul

SET "LINE_COUNT=1"

FOR /F "tokens=*" %%f IN ('DIR /S /B *.csv 2^>nul') DO (
    FOR /F "usebackq tokens=* eol=ÿ" %%s IN ("%%~f") DO (
        >>"%SUMMARY_FILE%" ECHO !LINE_COUNT!%%s
        SET /A LINE_COUNT+=1
    )
)

POPD
ENDLOCAL

>>"%SUMMARY_FILE%"现在,重定向位于该行的开头,该行将具有当前行号的当前CSV文件中的行输出到摘要文件中。这样可以避免在摘要文件中每行的末尾添加一个空格。

在运行批处理文件时,您是否在设置为当前目录的目录中具有写权限?

我添加了这一行PUSHD "%~dp0",以确保在开始处理之前批处理文件的目录是当前目录,并POPD在退出批处理之前使用还原以前的工作目录

eol=ÿ用于将很有可能在CSV文件中不存在的字符定义为行尾字符,而不是;默认字符德语CSV文件包含;作为分隔符。

字符ÿ在代码页Windows-1252中的十进制值为255 ,即代码页Windows-1252中的最后一个字符。此字节是OEM代码页850中的不间断空格因此,使用代码页850或OEM代码页437显示或编辑批处理文件时eol= 将在查看器/编辑器中显示该批处理文件

无分离器之间应使用!LINE_COUNT!%%s若所有的线条与在CSV文件分号这也是场值之间的分隔已经开始。否则,应将分隔符(逗号,分号,管道(转义),制表符)插入左侧%%s

另一个问题是,如果CSV文件是使用UTF-16编码的Unicode文件。在这种情况下,将不会创建任何摘要文件,因为FOR命令将从包含大量空字节的CSV文件中读取任何行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中合并来自多个文件夹的多个CSV文件?

如何使用python合并文件夹中的多个.csv

如何合并文件夹和子文件夹?

合并来自多个子文件夹的同名csv文件

如何将文件夹中的不同csv文件合并为单个csv文件?

来自不同位置文件夹的多个csv文件的动态批量插入

合并来自不同源文件夹的图像

合并来自单独文件夹的文件

读取不同文件夹深度的多个csv文件

如何从s3中的不同文件夹附加多个csv文件

如何在具有不同条目但同一列的文件夹中合并不同的 csv 文件?

如何运行子文件夹中的多个.bat文件

如何读取Bash Shell中多个文件夹和子文件夹中的文件

批处理脚本-如何删除多个目录下的子文件夹(文件/文件夹)

如何合并多个文件夹并保持其内容排序?

将来自不同文件夹的map-reduce输出合并到单个文件夹中

如何通过使用unix命令在不同文件夹中合并多个具有相似名称的文件?

将子文件夹中的多个 CSV 文件合并到一个唯一的文件中,并在新列中添加文件名

如何创建支持不同屏幕尺寸的子文件夹?

如何制作子文件夹的子文件夹?

mv 来自特定日期的不同文件夹中的多个文件

尝试将不同文件夹中的多个工作簿合并为一个主文件夹

在Excel查询编辑器中将CSV文件的文件夹与不同数量的列合并

rsync子文件夹到不同的文件夹名称

在不同的命名文件夹下创建子文件夹

如何根据R程序中的特定列名从文件夹中的多个CSV读取和合并数据

如何安装共享文件夹的子文件夹?

在 Powershell 遍历子文件夹中合并 CSV 文件 - 归档和删除旧文件使用 Target-CSV 的文件夹名称

如何合并具有不同标题的多个csv文件?