Вы можете попробовать это, это не проверено и может занять некоторое время в большой структуре каталогов :
@(For /F Delims^=^ EOL^= %%A In ('Dir/W/A-L 2^>Nul')Do @Set/A_f=_d,_d=%%A 2>Nul
Set/A_d-=2&Call Set/P"=%CD% : %%_f%% : %%_d%%"<Nul&Echo(
For /F Delims^=^ EOL^= %%A In ('Dir/B/S/AD-L 2^>Nul')Do @(
For /F Delims^=^ EOL^= %%B In ('Dir/W/A-L "%%A" 2^>Nul'
)Do @Set/A_f=_d,_d=%%B 2>Nul
Set/A_d-=2&Call Set/P"=%%A : %%_f%% : %%_d%%"<Nul&Echo())>"output.txt"
Примечание: так как это предназначено для запускаиз текущего каталога файл output.txt
будет учитываться в его собственном выходе.
[Редактировать /]
Полагаю, вы могли бы сделать то же самоевещь, использующая замедленное расширение, которое может ускорить процесс на долю.Вот модификация вышеупомянутого, которая использует отложенное расширение и только ради этого выводит вывод также в «относительном» формате:
@(For /F Delims^=^ EOL^= %%A In ('Dir/W/A-L 2^>Nul')Do @Set/A_f=_d,_d=%%A 2>Nul
Set/A_d-=2&SetLocal EnableDelayedExpansion&Echo(\ : !_f! : !_d!&EndLocal
For /F Delims^=^ EOL^= %%A In ('Dir/B/S/AD-L 2^>Nul')Do @(
For /F Delims^=^ EOL^= %%B In ('Dir/W/A-L "%%A" 2^>Nul'
)Do @Set/A_f=_d,_d=%%B 2>Nul
Set/A_d-=2&Set "_a=%%A"&SetLocal EnableDelayedExpansion
Echo(!_a:%__CD__%=\! : !_f! : !_d!&EndLocal))>"output.txt"