|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Архивирование каталога |
|
CMD/BAT - Архивирование каталога
|
Пользователь Сообщения: 61 |
Профиль | Отправить PM | Цитировать
Здравствуйте!
Помогите, пожалуйста, со следующими вопросами. 1. Есть каталог Src и каталог Dst. Требуется создать батник, который будет запускаться периодически, т.е. от случая к случаю, и который будет добавлять архивы ВСЕХ каталогов, включая их подкаталоги, из Src в Dst с именами архивов, совпадающими с именами каталогов первого уровня из Src. То есть, после отработки такого батника, в Dst должны создаться все несуществующие там архивы с именами, совпадающими с именами каталогов первого уровня из Src. Архивы в Dst могут быть как *.rar, *.zip, *.7z и пр. одновременно. Важны лишь сами имена без их архивного расширения. В целях ускорения работы такого батника при его повторных запусках, хотелось бы, чтобы при наличии в каталоге Dst архивов (*.rar, *.zip, *.7z и пр.) с именами каталогов из Src, эти каталоги из Src повторно в Dst не переархивировались. То есть, если запустить такой батник в случае, когда в Dst уже имеются все имена архивов, совпадающие (без учёта архивного расширения типа .rar, .zip, .7z и пр.) c именами каталогов первого уровня из Src, то такой батник ничего не должен создавать или перепаковывать. При этом должно быть допустимым наличие в Dst прочего содержимого - как файлов, так и папок, которые вообще не имеют отношения к именам из Src. 2. Если предположить частный случай по первому вопросу - имена каталогов первого уровня в Src находятся в формате даты YYYYMMDD, хотелось бы отдельным батником установить реальные даты создания/изменения этих каталогов в соответствии с их именами. Время не важно. Буду признателен за помощь. |
|
Отправлено: 22:08, 01-11-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Чересчур дурная лабораторка.
|
Отправлено: 03:38, 02-11-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать UserX,
лабораторка?
Цитата UserX:
Есть, например, папка 20180925. Что должно происходить в батнике и какой результат его работы? |
|
------- Последний раз редактировалось megaloman, 02-11-2018 в 18:31. Отправлено: 18:25, 02-11-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 18:33, 02-11-2018 | #4 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать megaloman, огромное Вам спасибо за Ваш отклик без излишней демонстрации своего превосходства над оппонентом.
Сейчас опробую Ваш батничек и отпишусь. Цитата megaloman: Есть, например, папка 20180925. Что должно происходить в батнике и какой результат его работы? » Да просто эта эта папка 20180925 должна получить дату своего создания и изменения 25.09.2018, и всё. Iska, и вам спасибо за то, что оказались неравнодушны. Ибо, как сказал Юлиус Фучек: "Бойся равнодушных! Это с их молчаливого согласия совершается всё зло на земле!" Очевидно, вас бояться не следует. |
|
Последний раз редактировалось UserX, 02-11-2018 в 19:04. Отправлено: 18:58, 02-11-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 19:24, 02-11-2018 | #6 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Что значит получить? » Это значит, что дата создания этой папки не совпадает с датой, определяемой именем папки. Хотелось бы это устранить и привести в соответствие. megaloman, проверил Ваш батник. Немного его изменил под себя и всё ПРЕВОСХОДНО сработало. Огромное Вам спасибо! ---------------------------- @Echo Off cls Set "Src=C:\111\Src\*.*" Set "Dst=C:\111\Dst" Set Arc="C:\Program Files\WinRar\Rar.exe" a -r -ep1 -dh -m5 -s -rr5p -ts+ -y Set "Ext=rar" If Not Exist "%Dst%" Md "%Dst%" FOR /D %%d IN ("%Src%") DO ( If Not Exist "%Dst%\%%~nxd.*" (Echo "%%d" &%Arc% "%Dst%\%%~nxd.%Ext%" "%%d\*.*") ) ---------------------------- Если не использовать ключ -ep1, то в архиве сохраняется весь путь C:\111\Src\Cat_name Ключ -ep1 подавил сохранение в архиве лишнего пути, правда, несколько больше, чем хотелось бы. А без этого ключа задача как-то решается? |
Последний раз редактировалось UserX, 02-11-2018 в 20:01. Отправлено: 19:45, 02-11-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать megaloman, а я понял так, что дату создания и дату последней модификации каталога надо задавать по содержащейся в его имени дате (время при этом несущественно).
|
Отправлено: 20:23, 02-11-2018 | #8 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
То есть, если папка 20180925 изменялась 20180929, то её надо переименовать? 20180925-->20180929 » Не-не, вообще ничего переименовывать не нужно. Просто в результате обычного копирования были утрачены исходные даты создания папок. Но эти исходные даты создания папок являются именами этих папок. Так что нужно взять папку с именем 20180925 и (можно даже ничего не проверяя) установить ей дату 20180925. Соответвственно, папка с именем 20180929 должна получить дату 20180929. То есть, после отработки, батник должен привести дату создания файла в соответствие с его именем. Извините, пожалуйста, что не слишком понятно ставил вопрос. |
Отправлено: 20:35, 02-11-2018 | #9 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата UserX:
А так, Если не использовать ключ -ep1? (остальные ключи не трогал и смысл их наизусть не помню - Ваша ответственность). Но, ИМХО, m5 -это чересчур, иногда архив получается больше, чем m3, а время радикально увеличивается
@Echo Off cls Set "Src=Z:\Box_In\Мой контент\Книги" Set "Mask=*.*" Set "Dst=Z:\Книги.arc" Set Arc="C:\Program Files\WinRar\WinRar.exe" a -r -dh -m5 -s -rr5p -ts+ -y Set "Ext=rar" If Not Exist "%Dst%" Md "%Dst%" Pushd "%Src%" &&( FOR /D %%d IN ("%Mask%") DO ( If Not Exist "%Dst%\%%~nxd.*" (Echo %%~td "%%d" &%Arc% "%Dst%\%%~nxd.%Ext%" "%%d\*.*") ) Popd ) pause Цитата Iska:
|
||
------- Последний раз редактировалось megaloman, 02-11-2018 в 20:59. Отправлено: 20:39, 02-11-2018 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - архивирование и шифрование каталога | Jalo | Скриптовые языки администрирования Windows | 10 | 24-12-2013 01:33 | |
Любой язык - Сравнение списка файлов и каталога с файлами с копированием файлов из каталога | jastreb83 | Скриптовые языки администрирования Windows | 0 | 10-04-2013 09:56 | |
CMD/BAT - Архивирование с удалением каталога при помощи запуска батника из того же каталога | HAMMER7 | Скриптовые языки администрирования Windows | 0 | 09-04-2012 20:29 | |
CMD/BAT - Архивирование | stolyar | Скриптовые языки администрирования Windows | 8 | 28-03-2010 13:33 | |
Архивирование | Maniacosaur | Программирование и базы данных | 6 | 27-08-2002 21:34 |
|