批处理功能未正确复制

时间:2016-02-23 14:16:36

标签: windows batch-file xcopy

REM Capture the date/time(right down to the second) and then assign it to a variable
set yy=%date:~-4%
set dd=%date:~-7,2%
set mm=%date:~-10,2%
set newdate=%dd%%mm%%yy%_%Time:~0,8%
set newdate=%newdate::=%
SET foldername="svetlana_backup_%newdate%"

SET drive=T: 

REM Source directories
SET documents=%drive%\Documents

REM Destination directories
SET destinationDocuments=%backupDir%\Documents

call:makedirandcopy %documents% %destinationDocuments%

:makedirandcopy
ECHO Making and Copying %~2 Directory
MKDIR %~2
XCOPY %~1 %~2 /E /F

我的桌面上有以下批处理文件,当我运行批处理文件时,应该在我的目标驱动器上创建一个目录并复制所有文件,但它会生成目录,和我的桌面上的文档子目录,批处理文件所在的位置,并且永远不会复制文档中的文件。文件名也不正确,只是将时间分配给目录而不是date_time。

Passing T:\Documents "T:\Backup"\"svetlana_backup_23022016_ 91300"\Documents
Making and Copying T:\Backup"\"svetlana_backup_23022016_ 91300"\Documents Directory
Making and Copying  Directory
0 File(s) copied 

如果我在没有标签的情况下完成所有这些工作。

1 个答案:

答案 0 :(得分:1)

call :makedirandcopy %documents% %destinationDocuments%
goto :EOF    

:makedirandcopy
ECHO Making and Copying %~2 Directory
MKDIR "%~2"
XCOPY "%~1" "%~2" /E /F
goto :EOF    

从您的运行报告中,您有一行

Passing T:\Documents "T:\Backup"\"svetlana_backup_23022016_ 91300"\Documents

您发布的代码中没有任何内容可以生成该行。

然后你有

Making and Copying T:\Backup"\"svetlana_backup_23022016_ 91300"\Documents Directory
Making and Copying  Directory

原因是你是call :makedirandcopy(显示第一行)以及call ed例程结束时(可能是它到达文件末尾) control返回到call之后的语句 - 这是例程,这次没有参数,因此是第二行。

尝试

call :makedirandcopy "%documents:"=%" "%destinationDocuments:"=%"
goto :EOF    

将删除每个变量中的多余引号并引用结果。

请注意,由于参数中的空格被传递给:makedirandcopyxcopy将需要引用这些参数。

也许你还需要

...
set newdate=%newdate::=%
set newdate=%newdate: =0%
...

用真实的真实0替换当前被抑制的前导零。