0

所以我一直在尝试为文件夹及其内容制作一个自动备份和日期戳 bat 程序。第一次循环时,它完全符合我的要求。但是第二次循环运行时,它通过删除前 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

这似乎已经解决了它。

4

1 回答 1

0

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

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

那么,下次"%date:~-4,4%"给你"14"""

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

于 2014-05-26T23:22:01.390 回答