@echo off
setlocal enableextensions disabledelayedexpansion
set "root=%cd%"
>"output.doc" (
for /f "tokens=2,*" %%a in ('
robocopy "%root%\." "%root%\." *.txt /l /s /is /ts /ndl /njh /njs /nc /ns
^| sort
') do type "%%~fb"
)
Isso usará robocopy para obter a lista de todos os arquivos .txt na pasta raiz indicada.
A lista de arquivos é gerada, incluindo a data da última modificação dos arquivos. robocopy imprime a hora UTC em yyyy/mm/dd hh:mm:ss format, portanto, a lista pode ser classificada corretamente.
O restante do código é apenas um comando for /f para processar a lista final, recuperando a referência do arquivo e digitando-a. O comando completo é redirecionado para o arquivo de saída para evitar a operação de abertura / fechamento de cada arquivo processado.
editado como é necessário para incluir o nome do arquivo e o registro de data e hora na saída final ...
@echo off
setlocal enableextensions disabledelayedexpansion
set "root=%cd%"
>"output.doc" (
for /f "tokens=1,2,*" %%a in ('
robocopy "%root%\." "%root%\." *.txt /l /s /is /ts /ndl /njh /njs /nc /ns
^| sort
') do (
echo(%%~nc
echo(%%a %%b [%%~tc]
type "%%~fc"
)
)
A cláusula tokens foi alterada para recuperar o registro de data e hora de robocopy , para que possamos incluí-lo na saída. %%a manterá a data, %%b a hora e %%c o nome do arquivo com o caminho completo.
Para cada arquivo, primeiro é ecoado o nome do arquivo sem extensão ( %%~nc ), depois o% time stamp robocopy e, apenas para comparar como a saída do robocopy é uma hora UTC, o timestamp do arquivo ( %%~tc ). Então o arquivo é digitado.
Como antes, toda a saída é redirecionada para o arquivo final.