使用批处理脚本复制带有日期的文件。

3
我有一个批处理文件,每天早上都会运行。它复制了一个文件,该文件的日期是前一天的日期。所以它会复制今天的文件,但会使用昨天的日期。文件夹名称为年份和月份。这个脚本的问题在于,每个月的第一天都会失败。这是因为它正在寻找当前的月份而非上一个月份。我该如何更改它,使得它可以在当前月份中工作,在新月的第一天时寻找前一个月份呢?
    rem @echo off

set year=%date:~-4,4%
set month=%date:~-7,2%
set YearMonth=%year%%month%
echo %YearMonth%


echo d = DateAdd^("d", -1, Date^(^)^)>yesterday.vbs
echo wscript.echo DatePart^("yyyy", d^) ^& "/" ^& DatePart^("m", d^) ^& "/"       ^& DatePart^("d", d^)>>yesterday.vbs
for /f "tokens=1-3 delims=/" %%I in ('cscript /nologo yesterday.vbs') do (
set Year=%%I
if %%J LEQ 9 (set Month=0%%J) else set Month=%%J
if %%K LEQ 9 (set Day=0%%K) else set Day=%%K
)
set Day=%Day%
del /q yesterday.vbs
echo %Day%


copy D:\OPMS\Zeag\CC\%YearMonth%\N\creasc.%Day% D:\OPMS\Zeag\CC\BizzExtract

thank you very much for your help


你可能会有兴趣使你的脚本与语言环境无关?请参阅https://dev59.com/e2Ik5IYBdhLWcg3wl_Ip#19131662 - Wolf
1个回答

1
你正在计算昨天的完整日期字符串,但随后只使用了日期部分。 %yearmonth% 仍然是旧值。
只需添加:
set yearmonth=%Year%%Month%

在你的copy代码行之前,使用昨天的值来更新它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接