На главную страницу сайта celitel.info
Вы не вошли в систему! [ ВОЙТИ ] или [ ЗАРЕГИСТРИРОВАТЬСЯ ]
CELITEL » Справочник команд bat/cmd » Тема: Копирование файлов, в имени которых присутствует дата -- Стр. 1  | Перейти в: 

Послал Сообщение
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:

 

  my counter Valid XHTML 1.0 Strict Valid CSS!