Новая папка для каждой резервной копии CMD

Я пытаюсь получить пакет для резервного копирования папки на рабочем сервере. (См. прикрепленную ссылку) Bat Error недопустимое количество параметров

Короче говоря, мне нужен сценарий, чтобы назвать новую папку для каждой резервной копии, которая была предложена «md new_folder», но я не могу понять контекст или как поместить ее в код. <удар>

@echo This will now create a new backup of S:\Internal Auditor\9 - September 14

@echo off

:: variables
set SRCFOLDER="S:\Internal Auditor\9 - September 14"
set DESTFOLDER="S:\Internal Auditor\2014\9 - Sept Backup"
set folder=%date:~5,2%-%date:~8,2%-%date:~0,4%
set backupcmd=/W /E /H /V /C /Z /I /F /J /R /Y

echo ######## PLEASE WAIT SYSTEM BACKINGUP SOME DATA########
"md new_folder" xcopy %SRCFOLDER% %DESTFOLDER% %backupcmd%

echo !!!!!!!!BACKUP COMPLETED THANKS!!!!!!!!!!!!!!
@pause

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

---------- РЕДАКТИРОВАТЬ: Я попробовал строку кода, которая медленно приближала меня: ----------

@echo This will now create a new backup of S:\Internal Auditor\9 - September 14

@echo off

:: variables
set SRCFOLDER="S:\Internal Auditor\9 - September 14"
set DESTFOLDER="S:\Internal Auditor\2014\9 - Sept Backup"
set folder=%date:~5,2%-%date:~8,2%-%date:~0,4%
md "%DESTFOLDER%\%folder%"
set backupcmd=/W /E /H /V /C /Z /I /F /J /R /Y

echo ######## PLEASE WAIT SYSTEM BACKING UP SOME DATA########
xcopy %SRCFOLDER% "%DESTFOLDER%\%folder%" %backupcmd%

echo !!!!!!!!BACKUP COMPLETED THANKS!!!!!!!!!!!!!!
@pause

НО – я получаю следующий вывод:

This will now create a new backup of S:\Internal Auditor\9 - September 14
Access is denied.
Error occurred while processing: S:\Internal.
A subdirectory or file Auditor\2014\9 already exists.
Error occurred while processing: Auditor\2014\9.
A subdirectory or file - already exists.
Error occurred while processing: -.
A subdirectory or file Sept already exists.
Error occurred while processing: Sept.
A subdirectory or file Backup\9/-9/-Tue  already exists.
Error occurred while processing: Backup\9/-9/-Tue .
######## PLEASE WAIT SYSTEM BACKING UP SOME DATA########
Invalid number of parameters
!!!!!!!!BACKUP COMPLETED THANKS!!!!!!!!!!!!!!
Press any key to continue . . .

----------РЕДАКТИРОВАТЬ 2: я попробовал строку кода, которая медленно приближала меня:----------

Я следовал предложениям и некоторым вещам, которые нашел в Интернете, и теперь я дошел до того, что получаю несколько ошибок:

md "S:\Internal Auditor\~\09/12/2014"
A subdirectory or file S:\Internal Auditor\~\09/12/2014 already exists.

И:

xcopy "S:\Internal Auditor\9 - September 14 S:\Internal Auditor\2014\9 - Sept Backup\09/12/2014
/W /E /H /V /C /Z /I /F /J /R /Y /D
File not found - 09/12/2014 /W /E /H /V /C /Z /I /F /J /R /Y /D

Это мой код:

@echo This will now create a new backup of S:\Internal Auditor\9 - September 14
Rem Backup 9 - September 14

@echo

:: variables
set "SRCFOLDER=S:\Internal Auditor\9 - September 14"
set "DESTFOLDER=S:\Internal Auditor\2014\9 - Sept Backup"
set folder=%date:~4%
md "%DESTFOLDER%\%folder%"
set backupcmd=/W /E /H /V /C /Z /I /F /J /R /Y /D


@echo ######## PLEASE WAIT SYSTEM BACKING UP SOME DATA########

xcopy "%SRCFOLDER% %DESTFOLDER%\%folder% %backupcmd%"

@echo !!!!!!!!BACKUP COMPLETED THANKS!!!!!!!!!!!!!!
@pause

Кроме того, когда я запускаю код, он создает новый каталог ~\09\12\2014 вместо желаемого ~\09/12/2014. Уточнение: создается 3 новых подкаталога вместо одного нового подкаталога.


person Bcarr91    schedule 09.09.2014    source источник
comment
не поворачивайте echo off, чтобы вы могли видеть, как анализируется ваш командный файл. вы увидите, что у вас есть проблемы с вашими кавычками (например, вы определяете свой DESTDIR, включая кавычки, но затем вы окружаете его другой парой в строке md и xcopy   -  person ths    schedule 10.09.2014
comment
Спасибо за предложение отключить "эхо" - это мне очень помогло...   -  person Bcarr91    schedule 12.09.2014
comment
вы заключаете в кавычки все параметры xcopy, а не только два пути по отдельности. Кроме того, вы не можете иметь / в путях, это незаконно.   -  person ths    schedule 12.09.2014
comment
set folder=%date:~4% по умолчанию ставит '/'... Зачем это делать, если это незаконно?   -  person Bcarr91    schedule 12.09.2014
comment
потому что Дос не экстрасенс. он не знает, что вы будете использовать эту строку в качестве имени папки.   -  person ths    schedule 13.09.2014
comment
Ха-ха - Хорошо - Так как бы мне исправить это, чтобы не использовать '/'? Также -   -  person Bcarr91    schedule 13.09.2014
comment
РЕДАКТИРОВАТЬ: Ха-ха - Хорошо - Итак, как мне исправить это, чтобы не использовать '/'? Кроме того, я продолжаю получать сообщение об ошибке Недопустимое количество параметров в строке: xcopy %SRCFOLDER% %DESTFOLDER%\%folder% %backupcmd%   -  person Bcarr91    schedule 13.09.2014


Ответы (2)


Хорошо, давай посмотрим, что ты делаешь. Ваша переменная folder устанавливается на основе ваших локальных настроек на короткую дату, что для меня показывает, например. Tue 09/09/2014, так что %date:~0,4% будет Tue. Используйте команду echo, чтобы убедиться, что вы получаете то, что хотите:

echo %date:~5,2%-%date:~8,2%-%date:~0,4%

Но давайте предположим, что вы уже поняли это и %folder% содержит то, что вам нужно. Это две команды в строке, которые в лучшем случае не будут работать, а в худшем создадут кучу папок, которых вы не ожидали:

"md new_folder" xcopy %SRCFOLDER% %DESTFOLDER% %backupcmd%

Вы хотите разделить это на 2 строки, и вы хотите использовать свое новое имя папки на основе даты как часть места назначения, я уверен. Итак, это сделает это:

md "%DESTFOLDER%\%folder%"

а затем для копирования вам нужно будет включить \%folder% в пункт назначения:

xcopy %SRCFOLDER% %DESTFOLDER%\%folder% %backupcmd%

Но я думаю, и я знаю, что не должен просить разъяснений, но, возможно, если я ошибаюсь, вам следует уточнить, что вам нужно немного больше в своем вопросе, вы действительно хотите, чтобы S:\Internal Auditor\2014\9 - Sept Backup было S:\Internal Auditor\ плюс значение в %folder% и не имело дата так, как она есть на этом пути.

Предложение: сделайте переменную %folder% форматом yyyy-mm-dd, например, 2014-09-09, чтобы ее можно было сортировать, и используйте ее в пункте назначения.

person Torqane    schedule 09.09.2014
comment
Спасибо, что убрали эхо %date — я нашел папку, которую не ожидал — на рабочем столе. XD И поясняю: S:\~\9 — 14 сентября — это исходная папка. Мне нужна резервная копия, чтобы скопировать содержимое, указанное выше, в: S:\~\9 — резервная копия сентября, но когда это произойдет, мне нужно создайте новую папку в папке резервного копирования с датой и временем в качестве имени папки. Также: Могу ли я сделать: установить папку =% дата: гггг-мм-дд - person Bcarr91; 10.09.2014
comment
Нет, вам нужно разобрать части даты, как вы это сделали, но с вниманием к разделам. Несомненно, на этом сайте есть десятки примеров. Для моего сегодняшнего результата Wed 09/10/2014 (стандартный формат США) было бы set folder=%date:~10,4%-%date:~4,2%-%date:~7,2%, чтобы получить 2014-10-09. - person Torqane; 10.09.2014

В порядке. Есть некоторые ошибки:

set SRCFOLDER="S:\Internal Auditor\9 - September 14"
set DESTFOLDER="S:\Internal Auditor\2014\9 - Sept Backup"

Должно быть (безопасный метод, добавление первой кавычки в начале SRCFOLDER и DESTFOLDER):

set "SRCFOLDER=S:\Internal Auditor\9 - September 14"
set "DESTFOLDER=S:\Internal Auditor\2014\9 - Sept Backup"
person Honguito98    schedule 10.09.2014