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»
После чего выполняем непосредственно копирование. При этом, если в папке-приемнике есть файл с именем таким же как в папке-источнике, то добавляем к имени копируемого файла штамп времени. А если такого файла нет, то просто копируем файл.
[b][size=150]Задача:[/size][/b]
Имеется Microsoft Windows Serverf 2003 R2 Rus SP2. Необходимо с помощью командного файла (сценария) скопировать файлы из одной папки в другую. При этом, если имена файлов совпадают, то нужно добавить к имени файла штамп времени.
[b][size=150]Решение:[/size][/b]
Как ни странно, в Windows нет команды, которая бы могла переименовывать файлы при совпадении имен. Встроенными командами мы можем лишь либо перезаписывать совпадающий файл, либо не перезаписывать.
Поэтому, родился вот такой вот командный файл:
[code]@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"))
[/code]
Сначала получаем штамп Даты/Времени в удобоваримом формате (см. [url=http://manaeff.ru/forum/viewtopic.php?f=4&t=904]Создание поколений архивов по датам и времени[/url]).
Далее задаем папку - источник «[b][i]Source[/i][/b]» и папку - приемник «[b][i]Destination[/i][/b]»
После чего выполняем непосредственно копирование. При этом, если в [b][i]папке-приемнике[/i][/b] есть файл с именем таким же как в [b][i]папке-источнике[/i][/b], то добавляем к имени копируемого файла штамп времени. А если такого файла нет, то просто копируем файл.