Это перенаправление >>
, которое делает его медленным - особенно с большими файлами. >>
открывает файл для записи, ищет конец текста для добавления, записывает новую строку и снова закрывает файл. Это делается для каждой отдельной строки, что занимает время.
Лучше всего сделать одну операцию записи. Так что вместо
for /l %%a in (1,1,1000) do echo %%a>>file.txt
, который открывает / пишет / закрывает файл тысячу раз, лучше сделать
(for /l %%a in (1,1,1000) do echo %%a)>file.txt
, который перенаправляет весь вывод цикла for
в файл за одну операцию открытия / записи / закрытия, что намного быстрее.
Применительно к вашему коду он должен выглядеть примерно так:
@echo off
set Source=U:\Help
REM For all txt files
FOR %%G IN ("%Source%\*.txt") DO (
ECHO Adding %%G
> %%G.txt (
REM I take the third word
for /f "tokens=3 delims=." %%f in ("%%~nG") do (
set NewFileName=%%f
REM For each line I add the date
for /f "usebackq tokens=*" %%a in ("%Source%\%%~G") do (
Echo %%a %1 %%f
)
)
)
)
(Примечание: я не проверял ваш код "полезной нагрузки", но я думаю, что есть несколько проблем, как отмечено в комментариях к вашему вопросу)