3

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

现在,我以前在 Linux 中完成了这项工作,只需告诉每日 bash 脚本将文件夹复制到“/home/whatever-date +%u'”。

date +%u 顺便输出星期几。1 代表星期一,2 代表星期二,以此类推。

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

4

4 回答 4

1

从这个页面:

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

编辑:对它的作用描述不佳。

于 2009-09-08T16:57:42.057 回答
1

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

set DOW=%date:~16,3%<br>
xcopy "C:\Source\*.*" "C:\Dest\%DOW%"
于 2009-10-19T19:42:01.140 回答
0

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

于 2009-09-08T16:16:35.777 回答
0

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

长答案:您可以查看那里以开始处理给定给定圈数(一周/ 7 天)的文件,并使用at或调度程序服务在每个星期日运行它(在 Windows 机器上)。

希望这可以帮助。

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

于 2009-09-08T16:09:38.490 回答