【问题标题】:Batch File timestamp for today and tomorrow今天和明天的批处理文件时间戳
【发布时间】:2015-01-08 17:23:06
【问题描述】:

我正在尝试创建一个批处理文件,以创建一个以明天日期命名的新文件夹,但我还需要它从具有今天日期的文件夹中获取文件。我的代码是这样写的,所以它只在我输入 %mm%%dd%%yy% 的明天之前设置它。我需要帮助编辑它,以便它以某种方式抓住两者。这是我的代码

@echo off

setlocal enableextensions disabledelayedexpansion

rem Retrieve data
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 
set "YY=%dt:~2,2%" 
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%"
set "Min=%dt:~10,2%"
set "Sec=%dt:~12,2%"

rem Remove padding from date elements and increase day
set /a "y=%YYYY%", "m=100%MM% %% 100", "d=(100%DD% %% 100)+1" 
rem Calculate month length
set /a "ml=30+((m+m/8) %% 2)" & if %m% equ 2 set /a "ml=ml-2+(3-y %% 4)/3-(99-y %% 100)/99+(399-y %% 400)/399"
rem Adjust day / month / year for tomorrow date
if %d% gtr %ml% set /a "d=1", "m=(m %% 12)+1", "y+=(%m%/12)"

rem Pad date elements and translate again to original variables
set /a "m+=100", "d+=100"
set "YYYY=%y%"
set "YY=%y:~-2%"
set "MM=%m:~-2%"
set "DD=%d:~-2%"

echo Tomorrow: %YYYY% / %MM% / %DD%

mkdir "C:\Users\name\Desktop\DNFB %mm%%dd%%yy%\"
mkdir "C:\Users\name\Desktop\DNFB %mm%%dd%%yy%\DNFB"

xcopy /s "C:\Users\name\Desktop\"DNFB %mm%%dd%%yy%"\file*.xls" "C:\Users\name\Desktop\DNFB %mm%%dd%%yy%\"

xcopy /s "C:\Users\name\Desktop\"DNFB %mm%%dd%%yy%"(今天)\file*.xls" "C:\Users\name\Desktop\DNFB %mm %%dd%%yy%(明天)\" - 从标有“DNFB 010815”的文件夹中抓取文件并将其粘贴到文件夹“DNFB 010915”(明天)

有可能吗?还是太矛盾了。谢谢

【问题讨论】:

  • 我不是要求提前 1 天制作文件夹。我正在尝试从今天开始抓取一个文件并将其提前 +1 天放入一个文件夹中。问题是我必须使用 %mm%%dd%%yy% 而现在的批次将其作为明天使用。那么我如何让它在今天和明天读取 %mm%%dd%%yy%
  • 在批处理文件中计算第二天(明天)的逻辑相同,无论您使用该计算的最终结果来做什么。

标签: date batch-file


【解决方案1】:

你有逻辑。使用更多变量

@echo off

    setlocal enableextensions disabledelayedexpansion

    for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 
    set "td.YY=%dt:~2,2%" 
    set "td.YYYY=%dt:~0,4%"
    set "td.MM=%dt:~4,2%"
    set "td.DD=%dt:~6,2%"

    rem Remove padding from date elements and increase day
    set /a "y=%td.YYYY%", "m=100%td.MM% %% 100", "d=(100%td.DD% %% 100)+1" 
    rem Calculate month length
    set /a "ml=30+((m+m/8) %% 2)" & if %m% equ 2 set /a "ml=ml-2+(3-y %% 4)/3-(99-y %% 100)/99+(399-y %% 400)/399"
    rem Adjust day / month / year for tomorrow date
    if %d% gtr %ml% set /a "d=1", "m=(m %% 12)+1", "y+=(%m%/12)"

    rem Pad date elements and set tomorrow variables
    set /a "m+=100", "d+=100"

    set "tm.YYYY=%y%"
    set "tm.YY=%y:~-2%"
    set "tm.MM=%m:~-2%"
    set "tm.DD=%d:~-2%"

    echo Today   : %td.YYYY% / %td.MM% / %td.DD%
    echo Tomorrow: %tm.YYYY% / %tm.MM% / %tm.DD%

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2017-01-13
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多