|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать файлы в директории (rename) |
|
|
CMD/BAT - [решено] Переименовать файлы в директории (rename)
|
Пользователь Сообщения: 105 |
Здравствуйте. В директории e:\backup присутствуют файлы
RezervnoeKopirovanie.afi RezervnoeKopirovanie1.afi С понедельника по пятницу создается силами программы AOMEI создается дифференциальная копия образа. Программа предусматривает возможность выполнения post-script по завершении сеанса резервного копирования. Идея была следующая: ЧАСТЬ № 1 каждый день после создания резервной копии запускается скрипт переименования файлов *.afi, путем добавления текущей даты в имя файла, то есть Сегодня: RezervnoeKopirovanie_08.04.2021.afi Завтра: RezervnoeKopirovanie_08.04.2021_09.04.2021.afi RezervnoeKopirovanie1_09.04.2021.afi Послезавтра: RezervnoeKopirovanie_08.04.2021_09.04.2021_10.04.2021.afi RezervnoeKopirovanie1_09.04.2021_10.04.2021.afi RezervnoeKopirovanie2_10.04.2021.afi ЧАСТЬ № 2 Каждую пятницу запускается скрипт, который из директории e:\backup будет находить файл в имени с текущей датой и копировать его на диск f:\ Собственно, до ЧАСТИ № 2 я так и не дошел, застряв в ЧАСТИ № 1, а именно: при выполнении данной команды for %%f in ("e:\backup\*.afi") do (rename "*.afi" *_%date%.afi) RezervnoeKopirovanie.afi переименовывается в RezervnoeKopirovanie.afi_08.04.2021.afi вместо RezervnoeKopirovanie_08.04.2021.afi, а при повторном запуске этой же команды вообще ничего не происходит, то есть файл RezervnoeKopirovanie.afi_08.04.2021.afi не переименовывается в RezervnoeKopirovanie.afi_08.04.2021.afi_08.04.2021.afi З.Ы. Хотелось бы конечно еще, чтобы при выполнении скрипта удалялась часть имени с предыдущими датами... RezervnoeKopirovanie_08.04.2021_09.04.2021_10.04.2021.afi --> RezervnoeKopirovanie_10.04.2021.afi З.Ы.Ы. Пока писал сообщение мысль посетила, может должно быть не "дописывание даты", а полностью переименование файла? вместо (rename "*.afi" *_%date%.afi) --> (rename "*.afi" *RezervnoeKopoirovanie_%date%.afi) Тем, кто дочитал - РЕСПЕКТ! Буду признателен за любую помощь! |
|
Отправлено: 18:10, 08-04-2021 |
fascinating rhythm Сообщения: 6661
|
Профиль | Отправить PM | Цитировать Можно не париться с переименованием, потому что дату создания или изменения можно извлечь и из свойств файла (powershell):
Или воспользоваться robocopy: Как вариант - почитать справочку к AOMEI на предмет именования файлов бэкапа, наверняка там что-то есть на эту тему. |
------- Отправлено: 10:04, 09-04-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата epoddubniy:
RezervnoeKopirovanie RezervnoeKopirovanie1 RezervnoeKopirovanie2 Цитата epoddubniy:
Может, их вообще не надо ежедневно переименовывать ( Еще вопрос, Вы файлы копируете или перемещаете? И, кстати, не в формате: имя_09.04.2021.afi имя1_09.04.2021.afi имя2_09.04.2021.afi имя3_09.04.2021.afi а в формате 2021.04.09_имя.afi 2021.04.09_имя1.afi 2021.04.09_имя2.afi 2021.04.09_имя3.afi По крайней мере тут логика сортировки по имени будет правильной. |
||
------- Последний раз редактировалось megaloman, 09-04-2021 в 16:24. Отправлено: 15:06, 09-04-2021 | #3 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Вне зависимости от имени образа резервного копирования, если настроена дифференциальная схема, то сначала делается основной архив, а затем к этому архиву (у меня настроено каждый день) создаются дифференциальные копии. При создании каждой дифференциальной копии программа добавляет индекс "1,2,4,...,n" Цитата megaloman:
Цитата megaloman:
Цитата megaloman:
Цитата epoddubniy:
Цитата DJ Mogarych:
1) создается пятничный образ резервного копирования 2) после создания, либо подключается сетевой диск через net use с необходимыми credentials, либо диск, который не был в сети, включается в сеть (через diskpart) 3) далее через robocopy копируется файл резервного копирования 4) после копирования файла диск снова переходит в состояние "не в сети" или тот, который был подключен через net use отключается через net use /delete По отдельности эти команды выполнить - имею представление как, но не могу объединить их в пакетный файл т.к., нужно сначала проверить создался ли файл резервного копирования или нет (наверное это можно сделать с помощью запуска постскрипта, путем создания файла в имени с текущей датой, а потом уже использовать оператор if, то есть если текстовый файл существует, начинается копирование), потом, после операции копирования проверить, докопировался он или нет (а это нужно операцию копирования логировать и построчно анализировать выходной файл, если я правильно понимаю, причем цикл должен непрерывно исполняться, пока не найдет строку, например "копирование завершено" - тоже не знаю как реализовать) Голова ломается, когда речь заходит об if + for + еще и вложенный оператор if... |
||||||
Отправлено: 22:50, 09-04-2021 | #4 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать epoddubniy,
Цитата epoddubniy:
То, что вы описали в постановке ЧАСТЬ № 1 делается так:
@Echo Off cls Set "BoxIn=Z:\Backup" FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO Set "Now=%%d" Set "Now=_%Now:~6,2%.%Now:~4,2%.%Now:~0,4%" Pushd "%BoxIn%" && ( For /f "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D ^| findstr.exe /R /V /C:"^.*%Now%\.afi$"`) Do ( Ren "%%f" "%%~nf%Now%%%~xf" ) Popd ) rem pause Exit /B ИМХО, надо так:
1. Каждый день пусть программа создаёт бэкапы в папке Backup, никакие переименования делать не надо. 2. Раз в неделю, например, запускается скрипт с переименованием имён этих файлов без даты в имени для добавления даты. Причем лучше (не принципиально) впереди в формате ГГГГ.ММ.ДД_ 3. Переименованные файлы сегодняшнего дня копируются в указанное место, лучше с созданием подпапки ГГГГ.ММ.ДД 4. Переименованные файлы сегодняшнего дня перемещаются в создаваемую в подпапку папки Backup\ГГГГ.ММ.ДД В принципе, переименование вообще не имеет смысла (п.2), если периодически разбрасывать группы созданных бэкапов по подпапкам И Вы совсем не думаете о том, что у Вас будут бэкапы бесконечно накапливаться, смысла в старых - никакого, зато место забьёте всё. |
||
------- Последний раз редактировалось megaloman, 10-04-2021 в 07:39. Отправлено: 07:19, 10-04-2021 | #5 |
fascinating rhythm Сообщения: 6661
|
Профиль | Отправить PM | Цитировать Всё проще пареной репы. Бэкап надо запускать из командной строки, и туда сразу подставлять дату.
Powershell $t = (get-date).ToString("yyyy.MM.dd") & AMBackup.exe /b new /t part /s E /d "\\192.168.0.100\Share\$t`_RezervnoeKopirovanie.adi" /n "BackupToShare" /u "admin" /p "123456" |
------- Отправлено: 10:51, 10-04-2021 | #6 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 12:55, 10-04-2021 | #7 |
fascinating rhythm Сообщения: 6661
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 13:50, 10-04-2021 | #8 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
"t$ : Имя "t$" не распознано как имя командлета," - вот такая ошибка появляется |
|
Отправлено: 16:43, 11-04-2021 | #9 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
"t$ : Имя "t$" не распознано как имя командлета," - вот такая ошибка появляется |
|
Отправлено: 19:43, 11-04-2021 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переименовать файлы | Alexander_88 | Скриптовые языки администрирования Windows | 4 | 05-07-2019 11:26 | |
PowerShell - Переименовать файлы XML | al-1k | Скриптовые языки администрирования Windows | 11 | 15-05-2017 19:37 | |
CMD/BAT - Вывести файлы из директории в меню choice | setdmg | Скриптовые языки администрирования Windows | 3 | 15-10-2014 20:32 | |
CMD/BAT - Переименовать и переместить файлы | vider | Скриптовые языки администрирования Windows | 7 | 12-05-2013 16:35 | |
$OEM$ директории - не копируются файлы | _Flame_ | Автоматическая установка Windows 2000/XP/2003 | 5 | 19-06-2007 11:58 |
|