在 CMD 中肯定有多种方法可以做到这一点。想到的第一种方法是有一个针对文件总数运行的 for 循环。每次运行时,将标题文件的内容附加到“合并”文件,然后将文章文件的内容附加到同一文件。另外,我建议您使用如下所示的文件结构:
Parent Folder
|
|------------------|
| |
Titles Articles
换句话说,将您的文件夹与您的标题和您的文件夹与您的文章子目录放在同一文件夹中。这将允许您将此脚本保存在“父文件夹”中,这将使目录浏览更容易遵循。
@echo off
echo Starting...
setlocal EnableDelayedExpansion
REM Save the directory of "Parent Folder"
set parent_dir=!cd!
if not exist Merged md Merged
REM Initialize other directories
set titles_dir=!parent_dir!\Titles
set articles_dir=!parent_dir!\Articles
set merged_dir=!parent_dir!\Merged
REM However many files you have goes below
set NUMBER_OF_FILES=100
for /l %%a in (1, 1, !NUMBER_OF_FILES!) do (
for /f "tokens=*" %%b in (!titles_dir!\Title_%%a.txt) do (
echo.%%b>>!merged_dir!\Merged_%%a.txt
)
for /f "tokens=*" %%b in (!articles_dir!\Article_%%a.txt) do (
echo.%%b>>!merged_dir!\Merged_%%a.txt
)
)
echo Done
@echo on
就是这样。您应该有完全合并的标题和文章。我用 100 个生成的文本文件对此进行了测试。这是我的测试脚本(该脚本也保存在“父文件夹”目录中):
@echo off
echo Starting...
setlocal EnableDelayedExpansion
if not exist Titles md Titles
if not exist Articles md Articles
set parent_dir=!cd!
set titles_dir=!parent_dir!\Titles
set articles_dir=!parent_dir!\Articles
set NUMBER_OF_FILES=100
for /l %%a in (1, 1, !NUMBER_OF_FILES!) do (
echo Title%%a>!titles_dir!\Title_%%a.txt
echo ----->>!titles_dir!\Title_%%a.txt
echo. >>!titles_dir!\Title_%%a.txt
for /l %%b in (1, 1, 100) do (
echo This is article number %%a>>!articles_dir!\Article_%%a.txt
)
)
echo Done
@echo on
只是一个简短的说明:这可能值得用更快的语言来做,比如 C++,特别是如果你正在处理大量的文件。
编辑
我测试了这个脚本,并且从生成标题和文章文件的初始测试脚本每秒生成略多于 550 个文件/秒。