简体   繁体   English

在Windows 2008 R2中使用批处理脚本文件进行复制

[英]Copying with batch scriptfile in Windows 2008 R2

I have a .cmd file that i want to use in automating copying a folder from a mapped location on a windows 2008 server to an external HDD connected to the windows server box: 我有一个.cmd文件,该文件要用于自动将文件夹从Windows 2008服务器上的映射位置复制到连接到Windows Server Box的外部HDD:

@ECHO OFF
ECHO Backup process started.
set TARGET_FOLDER=Z:\"WindowsImageBackup - Copy"
ECHO TARGET_FOLDER "%TARGET_FOLDER%"
SET DESTINATION_FOLDER=H:\SERVER_BACKUP_IMAGE
ECHO DESTINATION_FOLDER "%DESTINATION_FOLDER%"
For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set mydate=%%d%%c%%b%%a)
For /f "tokens=1-2 delims=: " %%a in ('time /t') do (set mytime=%%a%%b)
SET BACKUP_FOLDER=BACKUP_%mydate%_%mytime%
ECHO BACKUP_FOLDER "%BACKUP_FOLDER%"
SET FINAL_FOLDER=%DESTINATION_FOLDER%\%BACKUP_FOLDER%
MKDIR "%FINAL_FOLDER%"
ECHO DIRECTORY CREATED "%FINAL_FOLDER%"
ECHO Backup process started ...
XCOPY "%TARGET_FOLDER%" "%FINAL_FOLDER%" >> "%FINAL_FOLDER%\%BACKUP_FOLDER%.log" /Y
ECHO Backup process ended successfully.
@ECHO ON
pause

After running the script, the destination folder is created and the log file created says 0 files copied but there are files in the target folder. 运行脚本后,将创建目标文件夹,并且创建的日志文件显示已复制0个文件,但目标文件夹中有文件。 This is the output: 这是输出:

Backup process started. 备份过程开始。 TARGET_FOLDER "Z:\\"WindowsImageBackup - Copy"" DESTINATION_FOLDER "H:\\SERVER_BACKUP_IMAGE" BACKUP_FOLDER "BACKUP_20131409Sat_0333" DIRECTORY CREATED "H:\\SERVER_BACKUP_IMAGE\\BACKUP_20131409Sat_0333" Backup process started ... Invalid number of parameters Backup process ended successfully. TARGET_FOLDER“ Z:\\” WindowsImageBackup-复制“” DESTINATION_FOLDER“ H:\\ SERVER_BACKUP_IMAGE” BACKUP_FOLDER“ BACKUP_20131409Sat_0333”目录已创建“ H:\\ SERVER_BACKUP_IMAGE \\ BACKUP_20131409Sat_0333”备份过程已成功启动...无效的备份过程参数。

C:\\Control>pause Press any key to continue . C:\\ Control> pause按任意键继续。 . .

The 7th line is of interest but I do not know how to go around it. 第七行很有趣,但我不知道如何解决。 What parameters am i supposed to use? 我应该使用什么参数?

Funny thing is that if i run this same script on my windows 7 laptop (i have the same directory structure), it runs and copies accordingly. 有趣的是,如果我在Windows 7笔记本电脑上运行相同的脚本(我具有相同的目录结构),它将运行并进行相应的复制。

Thanks for your help. 谢谢你的帮助。

您的报价需要改进:

set "TARGET_FOLDER=Z:\WindowsImageBackup - Copy"

The /Y was in the wrong spot, the xcopy had no filespec, and your filepath quoting needed some cleaning up as Endoro mentioned. / Y位置错误,xcopy没有filespec,并且您的文件路径引用需要进行一些清理,如Endoro所述。 This is how I would go about it, using your style of code (and wmic to get a robust date/time stamp). 这就是使用您的代码风格(和wmic以获取可靠的日期/时间戳)的方式。

@ECHO OFF
ECHO Backup process started.
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set "dt=%%a"
set "YY=%dt:~2,2%"
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%"
set "Min=%dt:~10,2%"
set "Sec=%dt:~12,2%"
set fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%

set "TARGET_FOLDER=Z:\WindowsImageBackup - Copy"
SET "DESTINATION_FOLDER=H:\SERVER_BACKUP_IMAGE"
SET "BACKUP_FOLDER=BACKUP_%fullstamp%"
SET "FINAL_FOLDER=%DESTINATION_FOLDER%\%BACKUP_FOLDER%"

ECHO TARGET_FOLDER "%TARGET_FOLDER%"
ECHO DESTINATION_FOLDER "%DESTINATION_FOLDER%"
ECHO BACKUP_FOLDER "%BACKUP_FOLDER%"
MKDIR "%FINAL_FOLDER%" 2>nul
ECHO DIRECTORY CREATED "%FINAL_FOLDER%"
ECHO Backup process started ...
XCOPY "%TARGET_FOLDER%\*.*" "%FINAL_FOLDER%\" /Y >>"%FINAL_FOLDER%\%BACKUP_FOLDER%.log" 
ECHO Backup process ended
pause

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM