healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Копирование файлов, в имени которых присутствует дата |
|
Послано: 13-10-2014 14:14 |
|
|
Копирование файлов или каталогов (папок), в имени которых присутствует дата.
Копирование в файл или каталог (папку), в имени которых присутствует дата.
Большинство вопросов, задаваемых на форуме, связаны как раз с таким заданием.
Эти вопросы обсуждается ветках
Копирование файла с изменяемым именем,
Ежедневное копирование файлов с разными названиями и
Еженедельное копирование самого свежего файла по сети
Поэтому я попытаюсь обобщить такого рода информацию.
Опять же, будет куда послать вновь вопрошающих).
Для начала несколько слов о том, как мы будем получать элементы даты в bat / cmd файле.
Системная переменная %date% содержит текущую дату.
Если в окне командного процессора ввести команду
echo %date%
то вывод будет примерно таким
13.10.2014
Для получения отдельных значений номера дня, месяца и года используется операция
извлечения подстроки.
Все примеры, приведенные ниже, будут использовать это значение даты.
Так,
echo %date:~6%
выведет подстроку, начиная с 6-го символа (символы нумеруются, начиная а 0)
т е 2014 - четырехзначный год.
echo %date:~8% соответственно, выведет 14 - двухзначный год.
echo %date:~0,2% или это же можно записать так
echo %date:~,2%
выведет первые два символа строки - т. е. в данном случае номер дня.
Ну и
echo %date:~3,2% выведет номер месяца.
Далее в bat / cmd файлах там, где необходимо присутствие дня, месяца или года мы будем использовать
эти значения
Например, необходимо скопировать файл, с именем даты в формате YYYYMMDD и расширением rar в
в каталог backup.
copy c:\my\%date:~6%%date:~3,2%%date:~,2%.rar d:\backup
Если формат даты требуется такой - DDMMYY, то команда будет выглядеть так:
copy c:\my\%date:~0,2%%date:~3,2%%date:~8%.rar d:\backup
Аналогично можно поступать если необходимо скопировать файл в каталог или файл,
в имени котором присутствует дата.
Для проверки наличия и создания при необходимости каталога, в имени которого присутствует дата,
можно использовать такой код:
set PATHARHDAY=d:\arhive\%date:~6%%date:~3,2%%date:~0,2%
if not exist %PATHARHDAY% (
md %PATHARHDAY%
)
Если источник и (или) приемник находятся на сетевом диске и адрес
его начинается с двух слэшей, то необходимо использовать команду xcopy.
В некоторых случаях удобно копировать файлы, созданные (модифицированные) сегодня.
Для этого даже нет необходимости знать их имена.
xcopy d:\input d:\output /D:%date:~3,2%-%date:~0,2%-%date:~8%
Все файлы созданные (модифицированные) сегодня будут скопированы
из каталога d:\input в d:\output
FORFILES /P N:\arhive /D %DATE% /C "cmd /c copy @path M:\SUPERARHIVE"
Такая команда скопирует все файлы сегодня созданные из папки N:\arhive в папку M:\SUPERARHIVE.
PS
Взял за основу этот пост, расширил, долнил и раместил
тут.
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
|
|
Сейчас у нас: и 7 Гостя(ей) Всего сообщений: 26669
Всего тем: 1151
|
Based on:
|
|
|
|