Командный файл. Добавляем штамп времени при копировании

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:| :) :wink: :D :lol: :( :cry: 8) :o :oops: :? :x :P :evil: :twisted: :roll: :!: :?: :idea: :arrow: :mrgreen:
Ещё смайлики…

Markdown is OFF

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Командный файл. Добавляем штамп времени при копировании

Командный файл. Добавляем штамп времени при копировании

UncleFather » 28 июл 2014 17:47, Пн

Задача:

Имеется Microsoft Windows Serverf 2003 R2 Rus SP2. Необходимо с помощью командного файла (сценария) скопировать файлы из одной папки в другую. При этом, если имена файлов совпадают, то нужно добавить к имени файла штамп времени.

Решение:

Как ни странно, в Windows нет команды, которая бы могла переименовывать файлы при совпадении имен. Встроенными командами мы можем лишь либо перезаписывать совпадающий файл, либо не перезаписывать.

Поэтому, родился вот такой вот командный файл:

Код: Выделить всё

@Echo Off
SET VTIME=%date%-%time:~0,-3%
SET VTIME=%VTIME::=.%
SET Source=\\Server\Share\Folder1\Folder2\
SET Destination=D:\Folder3\Folder4\Folder5\Folder6\

FOR %%f IN ("%Source%*.*") DO (IF EXIST "%Destination%%%~nf%%~xf" (COPY /Y "%Source%%%~nf%%~xf" "%Destination%%%~nf(%VTIME%)%%~xf") ELSE (COPY /Y "%Source%%%~nf%%~xf" "%Destination%%%~nf%%~xf"))

Сначала получаем штамп Даты/Времени в удобоваримом формате (см. Создание поколений архивов по датам и времени).

Далее задаем папку - источник «Source» и папку - приемник «Destination»

После чего выполняем непосредственно копирование. При этом, если в папке-приемнике есть файл с именем таким же как в папке-источнике, то добавляем к имени копируемого файла штамп времени. А если такого файла нет, то просто копируем файл.


Вернуться к началу