.bat 脚本复制明天日期的文件

问题描述 投票:0回答:1

我正在尝试创建一个 .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位。

batch-file
1个回答
0
投票

虽然我认为我见过有人在批处理脚本中本地处理几个月内的几天,但需要大量(相对于您想要做的事情)代码来实现它,而像 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 等

© www.soinside.com 2019 - 2024. All rights reserved.