我使用
创建了一个特定文本文件的文件路径列表dir /b /s "xinfo.txt" > index.txt
所有这些文本文件都是CSV,我想将它们合并/追加到一起以创建一个名为“sourcing_directory”的新文本文件。
我尝试过http://www.sidesofmarch.com/index.php/archive/2004/03/30/using-the-for-command-to-copy-files-listed-in-a-text-file/中提到的使用以下方法的方法:
for /f "delims=" %%i in (filelist.txt) do echo D|xcopy "\\server\share\folder\%%i" "c:\temp\%%i" /i /z /y
要将所有文本文件复制到一个文件夹中,以便我可以使用“复制”合并所有文件。然而,这似乎不起作用,因为index.txt的结构方式或所有文件具有相同名称的事实。
答案 0 :(得分:0)
要合并多个文件,您可以这样做:
rem // Prepare empty file:
> "merged.csv" rem/
rem // Merge the files:
for /F "delims=" %%F in ('dir /S /B "xinfo.txt"') do (
copy /Y "merged.csv"+"%%F" "merged.csv" /B
)
这不会以任何方式检查文件内容,因此对于CSV输入数据,每个输入文件都会被换行符终止,以获得有效的输出CSV文件。
如果无法保证这一点,则需要按for /F
读取每个文件,忽略空行,即使没有以换行符终止也读取最后一行:
rem // Write to output file:
> "merged.csv" (
for /F "delims=" %%F in ('dir /S /B "xinfo.txt"') do (
rem // Read input files line by line:
for /F usebackq^ delims^=^ eol^= %%L in ("%%F") do echo(%%L
)
)
要使用头文件,请尝试以下操作:
rem // Copy header file:
copy /Y "header.csv" "merged.csv"
rem // Merge the files:
for /F "delims=" %%F in ('dir /S /B "xinfo.txt"') do (
copy /Y "merged.csv"+"%%F" "merged.csv" /B
)
或者这个:
rem // Copy header file:
copy /Y "header.csv" "merged.csv"
rem // Append to output file:
>> "merged.csv" (
for /F "delims=" %%F in ('dir /S /B "xinfo.txt"') do (
rem // Read input files line by line:
for /F usebackq^ delims^=^ eol^= %%L in ("%%F") do echo(%%L
)
)