@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.