代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

使用DOS批处理文件备份过去7天的文件夹

  •  3
  • Manos Dilaverakis  · 技术社区  · 15 年前

    我正在尝试制作一个脚本,在过去的7天里每天都要复制一个文件夹(在Windows中)。在第8天,我希望它取最旧的副本并覆盖它,等等,所以在任何时候,我都会有一个7天的文件夹“历史记录”。

    现在,我以前在Linux中只是通过告诉每日bash脚本将文件夹复制到“/home/whatever date+%u”来完成这个操作。

    顺便说一下,日期+u输出一周中的某一天。周一1人,周二2人等。

    相比之下,DOS日期命令完全延迟。在DOS批处理文件中,是否有一个简单的方法来获取一周中的一天(数字值),或者我应该放弃并用Java编写它?

    4 回复  |  直到 11 年前
        1
  •  1
  •   Strabbi    15 年前

    From this page:

    @echo off
    Echo.|Command /C Date>DOW
    set /p today=<DOW
    set DOW=%today:~16,3%
    xcopy "C:\Source\*.*" "C:\Dest\%DOW%"
    

    这将备份到名为sun、mon、tue的子文件夹中…星期六。您需要自己创建这些文件夹,或者编辑脚本来创建它们。

    编辑:对这项工作的糟糕描述。

        2
  •  1
  •   Taryn Frank Pearson    12 年前

    没有临时文件的kris的更好的变体

    set DOW=%date:~16,3%<br>
    xcopy "C:\Source\*.*" "C:\Dest\%DOW%"
    
        3
  •  0
  •   JRL    15 年前

    日期环境变量(%date%)返回一周中的某一天(周一、周二、周三等)。似乎已经足够好了。

        4
  •  0
  •   Community CDub    7 年前

    简短回答: 我不知道,不,你不能得到星期几。正如前面提到的,你最好使用Java。

    长答案: 你可以看看 there 开始处理给定圈数的文件(一周/7天),并使用 或者调度程序服务每周日(在Windows计算机上)运行它。

    希望这有帮助。

    编辑: 我看到你每天都想做这个,在第八天有不同的行为。您可以始终在目录中留下一个标记(名为“uuuuuuuuday”的隐藏文件,包含迭代,并在开始复制作业时检查它。
    如果是1到6,则增加内容;如果是7,则复制主副本并将1放入文件中。
    沿着这些线。