Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file robocopy返回无效参数_Batch File - Fatal编程技术网

Batch file robocopy返回无效参数

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

我已经写了一个批处理文件,该文件的目的是停止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.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 !
  • 虽然不是很重要,但下面的代码仍然无效,这意味着即使执行多次,它也只能创建一个文件夹。当我执行多次时,它会创建嵌套文件夹,如

    E:\Backup-20-Nov-2018\Backup-20-Nov-2018\Backup-20-Nov-2018\

  • 错误代码:

    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简直是垃圾!机器人技术远比机器人技术优越。不幸的是,您不理解语法,无法交流如何使用它。仅仅告诉我们它不起作用并不能帮助任何人理解如何解决问题。非常感谢你们两位。自从格哈德多跑了一英里,我喜欢他的解决方案,但从技术上来说,两人都是对的。非常感谢你们两位。自从格哈德多跑了一英里后,我倾向于用他的解决方案,但从技术上来说,这两种方法都是正确的。