试试这个(适应的文件名和路径相应):
for %%F in ("C:\...\*.txt") do (
> "%%~F.tmp" type "Header.txt"
>> "%%~F.tmp" type "%%~F"
move /Y "%%~F.tmp" "%%~F"
)
这结合了Header.txt
和处理的内容在临时文件(例如,文本文件是Body.txt
,所以临时文件是Body.txt.tmp
)中的文本文件,然后它将临时文件移动到原始文本f ile,因此它被替换。请注意,文件Header.txt
中的标题必须以分行符终止;否则,文本文件的标题和第一行就会合并成一行文本。
为了检查文件是否已经被插入的头,你可以首次行重定向到一个变量,并将它们与头文件的第一行比较,这样的:
< "Header.txt" set /P HEAD=""
for %%F in ("C:\...\*.txt") do (
< "%%~F" set /P LINE=""
setlocal EnableDelayedExpansion
if not "!LINE!"=="!HEAD!" (
endlocal
> "%%~F.tmp" type "Header.txt"
>> "%%~F.tmp" type "%%~F"
move /Y "%%~F.tmp" "%%~F"
) else endlocal
)
每个单独的文件在这里单独检查。为此,您需要delayed expansion,因为您正在写入和读取代码块中的相同变量,即for
循环。
非常感谢...其工作... :) 我需要一个额外的功能。请帮助我.. 一旦批处理文件运行并且任务已成功完成,再次如果用户尝试运行相同的批处理文件,它应该限制用户添加文本(我的意思是头文件)到文件和应该通过像“头文件已包含在文件中的错误信息,不要运行批处理文件”。 .....在此先感谢..... –
我还需要添加页脚末尾的行。页脚内容将在单独的文件中。 –
执行'move'命令后,插入行>> >>“%%〜F”键入“Footer.txt”...... – aschipfl