Показать полную графическую версию : копирование папки с целевым именем "название+дата создания"
мне нужно скопировать папку с одного места в другую. но при создание папки , имя папки должно быть из названия+дата создания. Помогите !!!
@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
NiOl ,
а можно по подробнее?
1. call :Dst %Src% - зачем мы вызваем эту строку
2. set Dst=%Dst%-%date:~6,4%-%date:~3,2%-%date:~0,2%
:~6 - на что это влияет?
4% - а это что?
За ранее благодарен.
tarasov.evgeny
1 Для выделения из переменной имени файла, правда там лишний знак процента в конце, должно быть так:
set Dst=%Dst%%~n1 Подробнее: For /?
2 Выделение из переменной ее части. Подробнее: Set /?
Вот здесь ОЧЕНЬ хорошо написано: Урок bat-аники (http://www.rsdn.ru/?article/winshell/batanyca.xml) - советую почитать в любом случае - займет 2-3 часа.
1. call :Dst - вызов процедуры (подпрограммы) - на самом деле в данном случае "шаманство" - не получалось обработать дату.
2. Надо рассматривать всю часть между знаками процента: переменная вызывается так: %date% - для нашего региона получим строку вида "11.08.2009". Используемый вызов чуть сложнее: %date:~6,4%. Это значит, что из переменной date нужно выделить подстроку начиная с 6го символа (считаются от нуля) и длиной 4 символа. Получим год: "2009".
Dr.Kifir4ik
08-02-2011, 02:52
С копированием понятно, а как заархивировать то что мы скопировали и записать все действия в лог?
поиск рулит, разобрался, может кому пригодится:
@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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.