Estou tentando criar um script .bat para copiar um arquivo que tem a data de amanhã no nome. Este script funciona, porém se o mês tiver menos de 31 dias, o script não fornece a data atual corretamente.
O arquivo contém comentários em português brasileiro.
Alguém pode me ajudar?
@echo off
chcp 850
setlocal enableextensions disabledelayedexpansion
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
rem Obtenha a data atual em formato MM/DD/YYYY
set "MES=%date:~0,2%"
set "DIA=%date:~3,2%"
set "ANO=%date:~6,4%"
rem Atualize a data para representar o dia seguinte
set /a "DIA=%DIA% + 1"
rem Verifique se o mês ultrapassa 12 (dezembro)
if %DIA% gtr 31 (
set "DIA=1"
set /a "MES=%MES% + 1"
if %MES% gtr 12 (
set "MES=1"
set /a "ANO=%ANO% + 1"
)
)
rem Formate a data para ter dois dígitos
set "DIA=0%DIA%"
rem Construa o nome do arquivo com a nova data
set "NOVA_DATA=VM_%DIA%-%MES%-%ANO%.mp3"
rem Construa os caminhos completos para os diretórios e arquivos
set "ORIGEM=C:\Users\Admin\Dropbox\CLOUD BEACH\Gratuitos - Gospel\PM - Vida Melhor\%NOVA_DATA%"
set "DESTINO=C:\Users\Admin\Dropbox\CLOUD BEACH\AUTODJ\AUTODJ - Gratuitos - Gospel\AutoDJ - Vida Melhor\VM.mp3"
rem Verifique a existência do arquivo com a nova data
if exist "%ORIGEM%" (
copy /b "%ORIGEM%" "%DESTINO%"
) else (
del /s /q "%DESTINO%"
)
rem Exiba uma mensagem na tela
echo.
echo ╔══════════════════════════════╗
echo ║ Favor não forçar o teclado ║
echo ╚══════════════════════════════╝
echo.
echo "Data Atual: %DIA%-%MES%-%ANO%"
Gostaria que a variável "Data Atual" fornecesse a data do dia seguinte, independente da quantidade de dias do mês. O PC que executa este script é o Windows 7 de 64 bits.