Batch file robocopy返回无效参数
我已经写了一个批处理文件,该文件的目的是停止vm,备份(复制整个Virtualbox VMs)文件夹到另一个驱动器,启动vm 代码如下:Batch file robocopy返回无效参数,batch-file,Batch File,我已经写了一个批处理文件,该文件的目的是停止vm,备份(复制整个Virtualbox VMs)文件夹到另一个驱动器,启动vm 代码如下: @echo on cls echo "Change directory to Virtualbox root directory" cd /d "c:\Program Files\Oracle\VirtualBox" echo "Powering off Virtual machines" VBoxManage controlvm "centos74.m
@echo on
cls
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Powering off Virtual machines"
VBoxManage controlvm "centos74.master" poweroff
PING localhost -n 30 >NUL
VBoxManage controlvm "centos74.agent" poweroff
PING localhost -n 30 >NUL
echo "Commence backup work"
cd /d E:
if not exist Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2% mkdir Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%
REM cd Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%
robocopy C:\Users\user\VirtualBox VMs\ E:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Starting Virtual machines"
VBoxManage startvm "centos74.master"
PING localhost -n 30 >NUL
VBoxManage startvm "centos74.agent"
PING localhost -n 30 >NUL
@echo off
然而,我有两个问题。
1.robocopy本身不工作,请查看下面的执行错误消息
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Tuesday, 20 November 2018 9:19:03 AM
Source - C:\Users\user\VirtualBox\
Dest - E:\VMs\
Files :
Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #3 : "E:\Backup-2018-11-20"
Simple Usage :: ROBOCOPY source destination /MIR
source :: Source Directory (drive:\path or \\server\share\path).
destination :: Destination Dir (drive:\path or \\server\share\path).
/MIR :: Mirror a complete directory tree.
For more usage information run ROBOCOPY /?
**** /MIR can DELETE files as well as copy them !
if not exist Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2% mkdir Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%
任何帮助都将不胜感激。修复一些双引号和其他问题,并使用
timeout 30
代替ping
命令:
@echo on
cls
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Powering off Virtual machines"
VBoxManage controlvm "centos74.master" poweroff
timeout 30
VBoxManage controlvm "centos74.agent" poweroff
timeout 30
echo "Commence backup work"
cd /d E:
if not exist "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%" mkdir "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%"
REM cd "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%"
robocopy "C:\Users\user\VirtualBox VMs" "E:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%" /r:0
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Starting Virtual machines"
VBoxManage startvm "centos74.master"
timeout 30
VBoxManage startvm "centos74.agent"
timeout 30
@echo off
修复一些双引号和其他问题,并使用
timeout 30
代替ping
命令:
@echo on
cls
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Powering off Virtual machines"
VBoxManage controlvm "centos74.master" poweroff
timeout 30
VBoxManage controlvm "centos74.agent" poweroff
timeout 30
echo "Commence backup work"
cd /d E:
if not exist "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%" mkdir "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%"
REM cd "Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%"
robocopy "C:\Users\user\VirtualBox VMs" "E:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%" /r:0
echo "Change directory to Virtualbox root directory"
cd /d "c:\Program Files\Oracle\VirtualBox"
echo "Starting Virtual machines"
VBoxManage startvm "centos74.master"
timeout 30
VBoxManage startvm "centos74.agent"
timeout 30
@echo off
您的问题是,在包含引号以保护空格时,需要避免在文件夹路径中结束反斜杠,因为它们将转义双引号,因此参数不会在您认为的位置结束(有关详细信息,请参阅)
您的问题是,在包含引号以保护空格时,需要避免在文件夹路径中结束反斜杠,因为它们将转义双引号,因此参数不会在您认为的位置结束(有关详细信息,请参阅)
路径“C:\Users\user\VirtualBox VMs”中有一个空格,因此如果不存在,您必须对其进行双引号引用(您应该对可能包含空格的所有路径变量进行双引号引用)“备份-%date:~-4,4%-%date:~-7,2%%date:~-10,2%%date:~-10,2%“mkdir”备份-%date:~-4,4%-%date:~-7,2%%date:~-10,2%“robocopy”C:\Users\user\VirtualBox VMs\”“E:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%“仍然不起作用xcopy让它起作用了,robocopy简直是垃圾!机器人技术远比机器人技术优越。不幸的是,您不理解语法,无法交流如何使用它。仅仅告诉我们它不起作用并不能帮助任何人理解如何解决问题。路径'C:\Users\user\VirtualBox VMs'中有一个空格,因此如果不存在“备份-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%”mkdir,您必须对它进行双引号引用(您应该对可能包含空格的所有路径变量进行双引号引用)“备份-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%“robocopy”C:\Users\user\VirtualBox VMs\“”E:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%“仍然不起作用xcopy让它起作用了,robocopy简直是垃圾!机器人技术远比机器人技术优越。不幸的是,您不理解语法,无法交流如何使用它。仅仅告诉我们它不起作用并不能帮助任何人理解如何解决问题。非常感谢你们两位。自从格哈德多跑了一英里,我喜欢他的解决方案,但从技术上来说,两人都是对的。非常感谢你们两位。自从格哈德多跑了一英里后,我倾向于用他的解决方案,但从技术上来说,这两种方法都是正确的。