-1

我不擅长批处理脚本。希望有人可以帮助我。

我的问题是,每天我的程序都会创建一个过时的文件夹。我想要一个自动的每日备份脚本来完成这项工作,我只想复制新创建的具有当前日期或昨天日期的文件夹并 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.

这可能吗?先感谢您

4

1 回答 1

0

批处理文件中的日期内容是出了名的挑剔和棘手。

基本上有两种方法:

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

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

    这有一个问题,它取决于您当前语言环境中的日期格式。如您所见,我使用的是 ISO-8601(恕我直言唯一理智的日期格式),这使得这变得相当容易。

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

  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%
    

我将把实际的文件复制作为练习留给你。

于 2013-02-26T10:40:38.437 回答