因此,我一直试图为一个文件夹及其内容制作一个自动备份和日期标记bat程序。当它第一次循环时,它做的正是我想要它做的。但是第二次循环运行时,它会在2014年删除前3个数字和0,从而改变文件夹。它看起来像这样。
第一个循环C:\users\username\desktop\05.26.2014\17.11\contents(This是正确的)
第二个循环C:\user\username\桌面\6.2.14\17\目录
第三个循环C:\用户\用户名\桌面\2.1\没有时间文件夹\内容
日期文件夹中有一个时间子文件夹,它也受此影响,直到它不再生成为止。有人能说出是什么原因造成的吗?这里是我在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
好像已经修好了。
发布于 2014-05-26 23:22:01
您不应该在"语句中使用set。这将使双引号进入实际结果。假设您的第一个值被正确解析,那么当您下一个构造date时,结果将是:
""26"."05"."2014""然后,下一次"%date:~-4,4%"会给你"14"""。
从set语句中删除所有引号,然后重试。如果仍然存在问题,则可能需要查看延迟变量展开。查看setlocal和endlocal命令。
https://stackoverflow.com/questions/23878530
复制相似问题