Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Резервное копирование (http://forum.oszone.net/showthread.php?t=295137)

Sisin 07-02-2015 16:42 2467932

Резервное копирование
 
Подскажите, пожалуйста, как сделать такой CMD/BAT:

На компьютере на диске С есть папки, которые надо резервировать/копировать на диск D.
Пример: При запуске CMD/BAT файла папка C:\Folder 1 копируется в папку D:\Folder 2\07.02.15\Folder 1
07.02.15 - папка с названием сегодняшней даты

Но если надо скопировать папку C:\Folder 1\Folder 11\Folder 111\Folder 1111, то Folder 1111 копируется с полным путем относительно диска С - D:\Folder 2\07.02.15\Folder 1\Folder 11\Folder 111\Folder 1111

megaloman 07-02-2015 22:10 2468068

Код:

@Echo Off

Set "From=C:\Folder 1"
Set "To=D:\Folder 2"

Call :DirCopy "%From%\" "%To%\"
GoTo :Eof

:DirCopy

Set "Dt=%Date:~0,2%.%Date:~3,2%.%Date:~8,2%"
Xcopy /E "%~1*.*" "%~2%Dt%%~p1"

Код:

@Echo Off

Set "To=E:\Folder 2"

FOR %%i IN ("C:\Folder 1" "C:\Folder A" "C:\Folder B" "C:\Folder C") DO (
        Call :DirCopy "%%~i\" "%To%\"
)
GoTo :Eof

:DirCopy

Set "Dt=%Date:~0,2%.%Date:~3,2%.%Date:~8,2%"
Xcopy /E "%~1*.*" "%~2%Dt%%~p1"


Sisin 07-02-2015 23:02 2468083

Что-то не работает ни один из вариантов.

Sisin 07-02-2015 23:49 2468103

Цитата:

Цитата megaloman
Как это проявляется. Какие сообщения при этом?
Продемонстрируйте батник с Вашими реальными путями.
В именах есть русские буквы? Если есть, в какой кодировке написан батник? »

Пардон, все работает. Текстовый редактор закосячил все.

Sisin 08-02-2015 00:06 2468108

Последний вопрос:

Как сделать, чтобы в строчке FOR %%i IN ("C:\Folder 1" "C:\Folder A" "C:\Folder B" "C:\Folder C") DO (
пути папок можно было записывать в столбик:

"C:\Folder 1"
"C:\Folder A"
"C:\Folder B"
"C:\Folder C"

Я правильно понимаю, что папки с кириллицей в пути не копируются???

Georgio 08-02-2015 00:48 2468123

Цитата:

Цитата Sisin
Как сделать, чтобы в строчке FOR %%i IN ("C:\Folder 1" "C:\Folder A" "C:\Folder B" "C:\Folder C") DO (
пути папок можно было записывать в столбик »


Код:

FOR %%i IN (
"C:\Folder 1"
"C:\Folder A"
"C:\Folder B"
"C:\Folder C"
) DO (



Цитата:

Цитата Sisin
Я правильно понимаю, что папки с кириллицей в пути не копируются??? »


Сохраните пакетный файл в кодировке OEM-866 (DOS).

megaloman 08-02-2015 00:54 2468126

Код:

@Echo Off

Call :DirCopy "C:\Folder 1\" "D:\Folder 2\"
Call :DirCopy "C:\Folder A\" "D:\Folder 2\"
Call :DirCopy "C:\Folder B\" "D:\Folder 2\"
Call :DirCopy "C:\Folder C\" "D:\Folder 2\"

:DirCopy

Set "Dt=%Date:~0,2%.%Date:~3,2%.%Date:~8,2%"
Xcopy /E /Y "%~1*.*" "%~2%Dt%%~p1"

Цитата:

Я правильно понимаю, что папки с кириллицей в пути не копируются???
-неправильно.
Батник следует записывать в ДОС-кодировке (866)

mwz 08-02-2015 01:01 2468127

Цитата:

Цитата Sisin
Я правильно понимаю, что папки с кириллицей в пути не копируются??? »

Код:

@echo off
CHCP 1251
<и далее по тексту>

не пробовали?

PS
Или – как сказал megaloman

Sisin 09-02-2015 10:35 2468757

Еще один нюанс появился:
Как сделать так, чтобы если папка уже скопирована в D:\Folder 2, но надо еще раз ее скопировать - папка бы сначала удалялась из D:\Folder 2, а уже потом копировалась?

Пример: папка C:\Folder 1\DOC копируется в D:\Folder 2 - получаем D:\Folder 2\090215\DOC. В этот же день надо скопировать папку DOC еще раз, но предварительно удалив DOC из D:\Folder 2\090215, чтобы не получилось так, что в папке DOC вместе с нужными файлами находятся и ненужные от предыдущей копии.

И главное, чтобы это все делалось бы без подтверждений.

megaloman 09-02-2015 12:50 2468846

Sisin, Перед Xcopy
Код:

If Exist "%~2%Dt%%~p1" Rd "%~2%Dt%%~p1" /s /q


Время: 08:05.

Время: 08:05.
© OSzone.net 2001-