O que há de errado
Você precisa expansão ativadaelayed .
- Expansão atrasada fará com que as variáveis sejam expandidas no tempo de execução e não no tempo de análise.
Use o seguinte arquivo de lote (test.cmd):
@echo off
setlocal EnableDelayedExpansion
for /f %%n in ('dir /b *.png') do (
set "oldfile=%%n"
set "d=!oldfile:~0,2!"
set "m=!oldfile:~2,2!"
set "y=!oldfile:~4,2!"
set "newfile=20!y!!m!!d!"
echo.!newfile!
)
endlocal
Notas:
- Modifique o comando
dir
conforme apropriado. -
%variable%
é substituído por!variable!
ao usar a Expansão com atraso.
Exemplo:
F:\test>dir *.png
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
02/06/2016 21:23 0 010616222.png
02/06/2016 21:23 0 120516222.png
02/06/2016 21:23 0 90316222.png
3 File(s) 0 bytes
0 Dir(s) 1,769,583,063,040 bytes free
F:\test>test
20160601
20160512
20623190
F:\test>
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.
- 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.