Компьютерный форум 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=147323)

Zlodeyz 06-08-2009 22:02 1187570

копирование папки с целевым именем "название+дата создания"
 
мне нужно скопировать папку с одного места в другую. но при создание папки , имя папки должно быть из названия+дата создания. Помогите !!!

NiOl 06-08-2009 22:55 1187603

Код:

@echo off
SetLocal EnableExtensions

rem Копируемая папка без замыкающего слеша
set Src=C:\TEMP
rem Путь, где будет создана исходная папка с датой на конце
set Dst=D:\

call :Dst %Src%
set Dst=%Dst%-%date:~6,4%-%date:~3,2%-%date:~0,2%
md %Dst%
cd /d %Dst%
xcopy %Src%\*.* /e /c /h /y
exit

:Dst
set Dst=%Dst%%~n1%
exit /B

Вообще в этой ветке можно наковырять несколько готовых примеров с похожими и даже более серьезными задачами

tarasov.evgeny 11-08-2009 11:19 1190828

NiOl ,
а можно по подробнее?
1. call :Dst %Src% - зачем мы вызваем эту строку
2. set Dst=%Dst%-%date:~6,4%-%date:~3,2%-%date:~0,2%
:~6 - на что это влияет?
4% - а это что?

За ранее благодарен.

gora 11-08-2009 12:02 1190870

tarasov.evgeny
1 Для выделения из переменной имени файла, правда там лишний знак процента в конце, должно быть так:
Код:

set Dst=%Dst%%~n1
Подробнее: For /?
2 Выделение из переменной ее части. Подробнее: Set /?

NiOl 11-08-2009 12:06 1190876

Вот здесь ОЧЕНЬ хорошо написано: Урок bat-аники - советую почитать в любом случае - займет 2-3 часа.
1. call :Dst - вызов процедуры (подпрограммы) - на самом деле в данном случае "шаманство" - не получалось обработать дату.
2. Надо рассматривать всю часть между знаками процента: переменная вызывается так: %date% - для нашего региона получим строку вида "11.08.2009". Используемый вызов чуть сложнее: %date:~6,4%. Это значит, что из переменной date нужно выделить подстроку начиная с 6го символа (считаются от нуля) и длиной 4 символа. Получим год: "2009".

Dr.Kifir4ik 08-02-2011 02:52 1607314

С копированием понятно, а как заархивировать то что мы скопировали и записать все действия в лог?

поиск рулит, разобрался, может кому пригодится:

@echo off
set DD=%DATE:~0,2%
set MM=%DATE:~3,2%
set YY=%DATE:~6,4%
set TT=%Time:~0,2%_%Time:~3,2%
set dirfrom="C:\CanoScan"
set copyto="E:\Backup\%DATE%\%TT%\"
xcopy %dirfrom% %copyto% /s /e > C:\7z_copy.log
"C:\Program Files\7-Zip\7z" a "E:\Backup\%DATE%\%TT%.7z" "E:\Backup\%DATE%\%TT%\" -r > C:\7z_arh.log
rmdir "E:\Backup\%DATE%\%TT%" /s /q


Время: 06:39.

Время: 06:39.
© OSzone.net 2001-