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

时间:2009-09-08 09:12:38

标签: date batch-file dos

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

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

日期+%u顺便输出星期几。 Mon为1,Tue为2,等等。

相比之下,DOS date命令完全被延迟。有一种简单的方法可以在DOS批处理文件中获取星期几(数值),还是应该放弃并用Java编写?

4 个答案:

答案 0 :(得分:1)

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 ... Sat的子文件夹中。您需要自己创建这些文件夹,或编辑脚本以创建它们。

编辑:对此的描述不佳。

答案 1 :(得分:1)

没有临时文件的Kris更好的变化

set DOW=%date:~16,3%<br>
xcopy "C:\Source\*.*" "C:\Dest\%DOW%"

答案 2 :(得分:0)

简短回答:不是我知道,不是你不能得到一周的那一天。如上所述,您最好使用Java。

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

希望这有帮助。

编辑:我发现你想要每天运行这个并且在第8天有不同的行为。您始终可以在目录中保留一个标志(隐藏文件名为“______day”,包含迭代#),并在开始复印作业时进行检查。
如果是1到6,则增加内容,如果是7,则执行主副本并将1放入文件中。
这些方面的东西。

答案 3 :(得分:0)

DATE环境变量(%DATE%)返回星期几(MON,TUE,WED,...)。好像它已经足够好了。