【问题标题】:how to make folder name with yesterday's date?如何用昨天的日期制作文件夹名称?
【发布时间】:2023-03-09 09:40:01
【问题描述】:

我想做两件事:

  • 使用昨天的名称创建文件夹名称 - 例如,如果今天是 2014_07_18,则在此目录“d:\test”下使用 2014_07_17 创建文件夹名称

  • 然后我在“d:\test*.txt”下有一些以昨天日期(2014_07_17)为修改日期的文件,需要转移到“d:\test\2014_07_17”处新创建的文件夹

但是通过今天运行批处理代码 (2014_07_18)

【问题讨论】:

  • 到目前为止你尝试了什么?...我们可以看看你的批处理文件和你的方法。告诉我们在您的尝试中什么不起作用。 recommend reading
  • 问题 #1 的 How can I create a date stamp for yesterday 可能重复。完成该工作后,您可以花一些精力来复制文件,然后edit 就您遇到的问题提出一个具体问题(并包含您的代码以显示您的努力)。 (提示:我使用搜索表达式 [batch-file] yesterdays date 找到了重复项,包括标签名称周围的 [],在此站点上搜索。)祝你好运。
  • 好的,我正在使用下面的代码创建具有今天日期的文件夹,例如 2014_07_18 - 但是 - 我想通过今天运行代码来创建具有昨天日期的文件夹名称... for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set MyDayOfWeek=%%a set MyMonth=%%b set MyDay=%%c set MyYear=%%d) f: mkdir F:\test\ %MyYear%_%MyMonth%_%MyDay%
  • 只有昨天修改过的文件才创建文件夹吗?如果是这样,您可以读取文件修改日期的解决方案:stackoverflow.com/a/2116420/2540156
  • 这里有一个解决方案可以将昨天的日期转换为变量:stackoverflow.com/questions/20796749/…

标签: batch-file


【解决方案1】:

这很有趣。下面是关于如何实现目标的头脑风暴——有一些缺陷需要修复(它们会 也很有趣),例如:

如果是当月 1 日,您需要更改月份值(例如,08012014 到 07312014)。您还需要考虑 总天数不同的月份(例如,08012014 到 07312014、07012014 到 06302014、03012014 到 02282014)。

C:\example>echo %date%

2014 年 8 月 16 日星期六

C:\example>echo %date:~-10,2%%date:~-7,2%%date:~-4,4%

08162014

C:\example>set /a today=%date:~-7,2%

16 C:\example>设置 /a 昨天=%today%-1

15

C:\example>echo %date:~-10,2%%yesterday%%date:~-4,4%

08152014

C:\example>设置 ydate=%date:~-10,2%%yesterday%%date:~-4,4%

C:\example>mkdir %ydate%

C:\example>目录

驱动器 C 中的卷没有标签。

卷序列号为 8E75-333E

C目录:\example

2014 年 8 月 16 日晚上 7:29。

2014 年 8 月 16 日下午 7:29 ..

2014 年 8 月 16 日下午 7:29 >> 08152014

           0 File(s)              0 bytes
           3 Dir(s)  938,853,076,992 bytes free

C:\示例>

【讨论】:

  • 1. %date% 依赖于定位,这不好。 2. OP使用YYYY_MM_DD
【解决方案2】:
@if (@X)==(@Y) @end /* jsctipt comment 

    @echo off
    for /f "tokens=* delims=" %%d in ('cscript //E:JScript //nologo "%~f0"') do (
        set "yesterday=%%d"
    )
    echo %yesterday%
    md %yesterday% >nul 2>&1
    exit /b 0

end of jsccript comment */

var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
var dd = yesterday.getDate();    
var mm = yesterday.getMonth()+1;                    
var yyyy = yesterday.getFullYear();    
if(dd<10){dd='0'+dd} 
if(mm<10){mm='0'+mm}
yesterday = yyyy+'_'+mm+'_'+dd;

WScript.Stdout.WriteLine(yesterday);

另存为.bat

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2022-11-15
    • 1970-01-01
    • 2022-12-24
    • 2021-08-27
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多