![]() |
Копирование папок, с сравнением и переименованием
Добрый день, Великие умы.
Почти дописал скрипт, но столкнулся с проблемой, не знаю как решить. Дано: Есть папка 1 - в которой создаются новые папки (по 1-10 шт в день), старые (вчерашние) удаляю. Есть задача эти файлы скопировать в другую папку 2 (типа бэкап), но есть одно НО. В папке 2 могут быть папки с таким же наименованием. Robocopy тупо внутри папки заменяет файлы, это не допустимо. Соответственно задача, из папки 1 скопировать файлы в папку 2, но если будет совпадение папки (пок) по наименованию, переименовать по шаблону ".000 +1" в конце файла. И переименовывать +1 пока не закончатся совпадения. -----------Папка 1-----Папка 2----Есть совпадение в папке 2---Папка 1-----Папка 2-----Есть совпадение в папке 2---Папка 1-----Папка 2 Пример: sdfsdf.000 -> sdfsdf.000 --->переименовываем +1 -> sdfsdf.001 -> sdfsdf.001 - переименовываем +1 -> sdfsdf.002 -> sdfsdf.001 - нет совпадения копируем. Как то так |
Цитата:
Цитата:
|
Цитата:
Выпускаются ЭЦП, грубо говоря в папку 1. После скрипт производит переменование ключей по шаблону средствами csptest.exe. После переименования, наименование папок так же генерируется, но бывают совпадения в наименованиях (с учетом что выпуск происходит всегда в пустую папку, csptest.exe не видит предыдущих наименований или хз честно по какому принципу он генерирует название). Так вот по этому это задача а не хотелка. При копировании переименованных ключей (новых) к старым (хранилище так сказать) robocopy тупо в папке с одинаковым названием либо заменяет содержимое на новое (что не допустимо) либо дополнит новыми файлами (что так же недопустимо). Папки в хранилище "Папка2" неприкасаемы) их можно только дополнять новыми папками с измененными этими 3 цифрами в конце "+1" |
ownsmir, вы путатесь в показаниях. Сначала речь шла про переименование файлов, теперь про переименование папок.
В общем, как-то так на примере двух папок (не рекурсивно) и переименования файлов Код:
$source = "C:\test\source" - Если есть, добавляем к расширению файла 1 и снова проверяем наличие уже такого файла. И так до тех пор, пока не избавимся от совпадения. - Если такого файла нет, создаем его В конце перезаписываем созданный файл из источника. До и после скрипта
До
Код:
[PS <159> C:\…\Scripts] dir $source; dir $target Код:
[PS <160> C:\…\Scripts] .\copy-rename.ps1 Код:
[PS <162> C:\…\Scripts] dir $source; dir $target |
Цитата:
Перефразирую "задача, из папки 1 скопировать все папки в папку 2, но если будет совпадение папки (пок) по наименованию, переименовать по шаблону ".000 +1" в конце наименования папки. И переименовывать +1 пока не закончатся совпадения. |
Цитата:
|
Цитата:
Но вроде все работает, за исключением того что он добавляет 1 к названию)) а не меняет последнюю цифру +1) |
Цитата:
|
Как то так
Код:
$source = "C:\tmp\source" |
Время: 07:38. |
Время: 07:38.
© OSzone.net 2001-