Meu requisito é ter data e hora diferentes para dois arquivos
so that we can differentiate with change in milliseconds.
Você pode usar o tempo de criação do arquivo para obter um valor único de data / hora, pois é improvável que dois arquivos com o mesmo nome tenham exatamente o mesmo horário de criação.
test.bat:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%x in ('dir /a-d /b /s f:\v\*.*') do (
rem use file creation time to get unique timestamp.
rem need to double up the \ for the wmic query.
set _name=%%x
set _name=!_name:\=\!
for /f %%t in ('wmic datafile where name^="!_name!" get creationdate ^| findstr /brc:[0-9]') do (
set _datetime=%%t
)
rem strip last 4 characters as always the same
echo %%~dpnx_!_datetime:~0,-4!%%~xx>>out.log
)
endlocal
Exemplo de uso:
F:\test>dir /a-d /b /s f:\v
f:\v\A\a.txt
f:\v\A\B\a.txt
f:\v\A\C\a.txt
f:\v\A\C\D\a.txt
F:\test>test
F:\test>type out.log
f:\v\A\a_20160804231753.551948.txt
f:\v\A\B\a_20160804231800.344348.txt
f:\v\A\C\a_20160804231803.581548.txt
f:\v\A\C\D\a_20160804231807.072814.txt
Seu arquivo de lote foi modificado adequadamente:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%x in ('dir /a-d /b /s d:\v\*.*') do (
rem use file creation time to get unique timestamp.
rem need to double up the \ for the wmic query.
set _name=%%x
set _name=!_name:\=\!
for /f %%t in ('wmic datafile where name^="!_name!" get creationdate ^| findstr /brc:[0-9]') do (
set _datetime=%%t
)
rem strip last 4 characters as always the same
echo %%~dpnx_!_datetime:~0,-4!%%~xx>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.tx
endlocal
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- dir - Exibe uma lista de arquivos e subpastas.
- enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
- para / f - Comando Loop: contra um conjunto de arquivos - condicionalmente executar um comando em cada item.
- editar / substituir variável - Edite e substitua os caracteres atribuídos a uma variável de string.
- variáveis - Extrai parte de uma variável (substring).
- wmic - Comando de instrumentação de gerenciamento do Windows.