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
如果我在没有标签的情况下完成所有这些工作。
答案 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
将删除每个变量中的多余引号并引用结果。
请注意,由于参数中的空格被传递给:makedirandcopy
,xcopy
将需要引用这些参数。
也许你还需要
...
set newdate=%newdate::=%
set newdate=%newdate: =0%
...
用真实的真实0
替换当前被抑制的前导零。