robocopy возвращает неверные параметры - PullRequest
0 голосов
/ 20 ноября 2018

Я написал командный файл, его цель - остановить vm, создать резервную копию папки (Копировать все виртуальные машины Virtualbox) на другом диске и запустить виртуальные машины.

Код указан ниже:

@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     ::     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 !
  1. Не так важно, но приведенный ниже код неэффективен, то есть он должен создавать только одну-единственную папку, даже если вы выполняете ее несколько раз. Когда я выполняю несколько раз, он создает вложенную папку, такую ​​как

    E: \ Backup-20-ноября-2018 \ Backup-20-ноября-2018 \ Backup-20-ноября-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%

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Ваша проблема заключается в том, что при включении кавычек для защиты пробелов необходимо избегать окончания обратной косой черты в путях к папкам, поскольку они будут избегать двойных кавычек, чтобы аргументы не заканчивались там, где вы думаете (см. этот вопрос для дополнительной информации).

robocopy "C:\Users\user\VirtualBox VMs" "e:\Backup-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%" /mir
0 голосов
/ 20 ноября 2018

Исправление некоторых двойных кавычек, других вещей и использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...