我在批处理脚本方面表现不佳。希望有人能帮助我。
我的问题是,每天我的程序会创建一个过时的文件夹。我想要一个自动化的每日备份脚本来完成这项工作,我只希望新创建的文件夹具有当前日期或昨天的日期来复制和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.
这可能吗?提前谢谢
答案 0 :(得分:0)
批处理文件中的日期内容非常挑剔和棘手。
基本上有两种方法可以解决这个问题:
使用%DATE%
并将其剪切为适当的部分,例如对我来说,它看起来像这样:
> echo %DATE%
2013-02-26
> echo %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
20130226
这就存在一个问题,即它依赖于当前语言环境中的日期格式。正如你所看到的,我正在使用ISO-8601(唯一合理的日期格式imho),这使得这很容易。
它适用于您在明确定义的环境中使用的一次性脚本,并且没有实际的健壮性要求。不过,我倾向于避免这种情况。
使用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%
我会把实际的文件复制作为练习留给你。