Спасибо топикстартеру!!! Отличный скрипт.
Однако, начиная с Win7 мелкософты либо накосячили, либо намеренно начали
триммировать слева строки при выводе через <nul set /p, в результате терялись пробелы.
Та же петрушка и в Win10
Придумал следующее решение:
Заменить в блоках :TWrite и :TQuickWrite
вывод <nul Set /P $Text=%$Text:~0,1% на условный через проверку:
IF "%$Text:~0,1%"==" " (<nul Set /p s=". ")ELSE (<nul Set /P $Text=%$Text:~0,1%) - т.е. строка начинается с точки, за ней следует BackSpace и только потом пробел.
Пример:
Код:

:TWrite
Rem Посимвольный вывод с имитацией эффекта печатной машинки.
Rem В отличии от Echo, не переводит на новую строку в конце текста.
If Not Defined $Text Set $Text=%~1
If Not Defined $Text Exit /B
::Начиная с Win7 просходит триммирование строки спереди, т.е. пробелы игнорируются, поэтому приходится изворачиваться
IF "%$Text:~0,1%"==" " (<nul Set /p s=". ")ELSE (<nul Set /P $Text=%$Text:~0,1%)
Ping -n 1 127.0.0.1>nul
Set $Text=%$Text:~1%
If Defined $Text (GoTo :TWrite) Else (Exit /B)
:TQuickWrite
Rem То же самое, что и TWrite, но без задержки
If Not Defined $Text Set $Text=%~1
If Not Defined $Text Exit /B
::Начиная с Win7 просходит триммирование строки спереди, т.е. пробелы игнорируются, поэтому приходится изворачиваться
IF "%$Text:~0,1%"==" " (<nul Set /p s=". ")ELSE (<nul Set /P $Text=%$Text:~0,1%)
Set $Text=%$Text:~1%
If Defined $Text (GoTo :TQuickWrite) Else (Exit /B)