我使用以下命令创建了特定文本文件的文件路径列表
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-中提到的方法文本文件/,它使用:
for /f "delims=" %%i in (filelist.txt) do echo D|xcopy "\\server\share\folder\%%i" "c:\temp\%%i" /i /z /y
要将所有文本文件复制到一个文件夹中,这样我就可以使用“复制”合并所有文件。但是,由于index.txt的结构方式或所有文件都具有相同的名称,这似乎不起作用。
要合并多个文件,可以执行以下操作:
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
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句