如何创建批处理脚本以使用当前日期复制新创建的文件夹

时间:2013-02-26 10:27:37

标签: batch-file

我在批处理脚本方面表现不佳。希望有人能帮助我。

我的问题是,每天我的程序会创建一个过时的文件夹。我想要一个自动化的每日备份脚本来完成这项工作,我只希望新创建的文件夹具有当前日期或昨天的日期来复制和rar然后发送到其他目录,其余的文件和子目录仍然存在。顺便说一下,我的程序根据当前日期创建文件夹名称。

这是样本

source todays date: february 26 20013
C:\MyApp\20130226 <new folder
        \20130225 <old folder
        \20130224 <old folder


destination todays date: february 26 20013
D:\Backup\20130226.rar << newly backup according to current date.

这可能吗?提前谢谢

1 个答案:

答案 0 :(得分:0)

批处理文件中的日期内容非常挑剔和棘手。

基本上有两种方法可以解决这个问题:

  1. 使用%DATE%并将其剪切为适当的部分,例如对我来说,它看起来像这样:

    > echo %DATE%
    2013-02-26
    
    > echo %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
    20130226
    

    这就存在一个问题,即它依赖于当前语言环境中的日期格式。正如你所看到的,我正在使用ISO-8601(唯一合理的日期格式imho),这使得这很容易。

    它适用于您在明确定义的环境中使用的一次性脚本,并且没有实际的健壮性要求。不过,我倾向于避免这种情况。

  2. 使用WMI获取当前日期:

    > wmic os get localdatetime
    LocalDateTime
    20130226113553.324000+060
    

    您可以将该输出存储在for /f

    的变量中
    for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x
    

    由于该格式已修复,您可以安全地使用子字符串来访问各个部分:

    echo %MyDate:~0,8%
    
  3. 我会把实际的文件复制作为练习留给你。