我必须使用.bat文件备份包含3个文件夹的文件夹。结构是MainFolder \ First Folder,MainFolder \ Second Folder,MainFolder \ Third Folder。我希望备份为MainFolder \ 30-04-2015 \ FirstFolder,MainFolder \ 30-04-2015 \ SecondFolder,MainFolder \ 30-04-2015 \ ThirdFolder。
我的.bat文件包含 -
@echo off
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%dd%-%mm%-%yyyy%
mkdir "Z:\MainFolder\%1%date%"
xcopy "C:\MainFolder\FirstFolder" "Z:\MainFolder\%date%\FirstFolder" /s/i
xcopy "C:\MainFolder\SecondFolder" "Z:\MainFolder\%date%\SecondFolder" /s/i
xcopy "C:\MainFolder\ThirdFolder" "Z:\MainFolder\%date%\ThirdFolder" /s/i
仅创建日期文件夹,并且不会复制任何文件。
请给出解决方案。
答案 0 :(得分:0)
你会讨厌有多难看出你的问题!
您通过[SET date=%dd%-%mm%-%yyyy% ]
设置日期。尾随空格包含在set命令中,因此稍后xcopy目标变为"Z:\MainFolder\05-01-2015 \FirstFolder"
- 这当然不存在且无效。
您还可以按如下方式简化日期设置:
FOR /F "TOKENS=2,3,4 DELIMS= -" %%A IN ('DATE/T') DO SET dt=%%A-%%B-%%C
请注意,我使用dt而不是覆盖内置日期环境变量。您可能必须切换%% A和%% B - 因为我认为您在代码中正在切换月份和日期。我通常以yyyy-mm-dd格式命名这样的目录,以便正确排序。