我正在尝试创建一个 .bat 脚本来复制名称中包含明天日期的文件。该脚本可以工作,但是如果该月少于 31 天,该脚本将无法正确给出当前日期。
该文件有巴西葡萄牙语注释。
有人可以帮助我吗?
@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%"
我希望“当前日期”变量提供第二天的日期,无论该月有多少天。 运行此脚本的PC是Windows 7 64位。
虽然我认为我见过有人在批处理脚本中本地处理几个月内的几天,但需要大量(相对于您想要做的事情)代码来实现它,而像 Powershell 这样的东西可以轻松地本地处理它。
在您的代码中,您可以添加以下内容:
FOR /F %%i IN ('powershell.exe -command "& {(Get-Date).AddDays(1) | Get-Date -Format MMddyyyy}"') DO (set TOMORROWDATE=%%i)
这将导致
%tomorrowdate%
通过调用 Powershell 来保存明天的日期,让它吐出明天的日期,并将其保存到变量中。
根据您的代码(谷歌翻译告诉我 MES 是 Month 的缩写),我目前已将其设置为以 MMddyyyy 格式输出,因此今天将显示为 09062023,但如果需要,可以对其进行调整,例如
-Format MM-dd-yyyy
会将输出更改为 09-06-2023 等