Командный файл. Добавляем штамп времени при копировании
Задача:
Имеется 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»
После чего выполняем непосредственно копирование. При этом, если в папке-приемнике есть файл с именем таким же как в папке-источнике, то добавляем к имени копируемого файла штамп времени. А если такого файла нет, то просто копируем файл.