自动日期戳备份bat文件在第二次循环后自行更改标记

时间:2014-05-26 22:34:46

标签: batch-file windows-7 backup datestamp

所以我一直在尝试为文件夹及其内容制作自动备份和日期戳蝙蝠程序。它第一次循环它完全符合我的要求。但是第二次循环运行时,它会通过删除前3个数字和2014年的0来更改文件夹。 它看起来像这样。

第一个循环C:\ users \ username \ desktop \ 05.26.2014 \ 17.11 \ contents(这是对的)

第二个循环C:\ user \ username \ desktop \ 6.2.14 \ 17 \ contents

第三个循环C:\ users \ username \ desktop \ 2.1 \ no time folder \ contents

日期文件夹中有一个时间子文件夹,它也会受此影响,直到它不再生成为止。 任何人都可以告诉导致这种情况的原因,这就是我在bat文件中的内容

@echo off
set /a x=0

:loop1



timeout /t 600

set day="%date:~-10,2%"
set month="%date:~-7,2%"
set year="%date:~-4,4%"
set hour="%time:~-11,2%"
set minute="%time:~-8,2%"

set time="%hour%.%minute%"

set date="%day%.%month%.%year%"

echo d | XCOPY Z:\copydirectory "G:\pastdirectory" /e

echo Loop number -^>%x%

set /a x=%x%+1

if %x% NEQ 10000 goto loop1

pause

感谢任何回答的人。

修改:已更改

到T的可变时间 和可变日期到D

这似乎已经解决了。

1 个答案:

答案 0 :(得分:0)

您不应在"语句中使用set。这会将双引号放入实际结果中。假设你的第一个值被正确解析,当你下一次构造date时,结果将是:

""26"."05"."2014""

然后,下次"%date:~-4,4%"将为您提供"14"""

set语句中删除所有引号,然后重试。如果仍有问题,则可能需要研究延迟变量扩展。查看setlocalendlocal命令。