barn
31-05-2019, 18:07
Приветствую всех читающих этот тред.
Пытаюсь написать сценарий резервного копирования и архивации, дефолтного юзер-профиля браузера Vivaldi.
Прошу помощи в написании, а именно: обнаружение и указание на правку грубых, а так же нелепых ошибок,
подсказок в виде оптимального кода, поскольку моё понимание кода, приходит только в визуальном сравнении.
По возможности кратко объяснить или точно, с указанием маршрута, послать в раздел справки или к готовым решениям на форуме.
В идеале - всё отточить, сделать всё по фэн-шуй изящней чем предложено мной.
Началось всё здесь (https://forum.vivaldi.net/post/290631) (сказал - делай), а поскольку мои познания в этой теме чуть выше начальных, пришлось сесть за учебники.
Насыщение и передозировка информацией случилась буквально через пару часов, с начала "обучения".
Тому косвенно способствовали: малое количество или полное отсутствие, для наглядности и усвоения, "живых" примеров, а так же мелкий шрифт изданий.
Через выдачу поисковой системы был найден сайт с авторскими статьями Белый Александра Петровича.
Сайт был благополучно загружен на компьютер, и обучение продолжилось в оффлайне. Но и тут, мало примеров для понимания, что и как работает.
Поэтому, начал параллельно читать и треды здесь, на форуме.
В результате появился скрипт (Альфа), для работы из директорий архиваторов «7-Zip» и «WinRar».
Позже, был скачан пакет «7z-extra» с автономным архиватором 7za (7-Zip), и строку его запуска и работы добавил в скрипт.
cls
@echo off
title Backup profile Vivaldi
setlocal
rem Задаём переменную VIVALDI - Путь к каталогу браузера
set VIVALDI=%LocalAppData%\Vivaldi
rem Задаём переменную END, куда будет помещён архив (например "C:\Users\XXXXX\Documents")
set END=%HomePath%\Documents
rem Задаём переменные для создания имени файла архива из текущей даты и времени
set vdate=%date:~-10%
set vtime=%time:~0,-3%
set vtime=%vtime::=.%
rem Задаём переменную DEFAULT и создаём каталог сбора файлов (например в системной "Temp")
set DEFAULT=%Temp%\Vivaldi\User Data\Default
mkdir "%DEFAULT%\"
rem Копируем нужные нам папки из каталога (точнее из "User Data / Default")
xcopy "%VIVALDI%\User Data\Default\databases" "%DEFAULT%\databases" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extension Rules" "%DEFAULT%\Extension Rules" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extensions" "%DEFAULT%\Extensions" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local App settings" "%DEFAULT%\Local App settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Extension settings" "%DEFAULT%\Local Extension settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Storage" "%DEFAULT%\Local Storage" /s /q /i /v
rem Копируем файлы
copy /v "%VIVALDI%\User Data\Default\Bookmarks" "%DEFAULT%\Bookmarks"
copy /v "%VIVALDI%\User Data\Default\Favicons" "%DEFAULT%\Favicons"
copy /v "%VIVALDI%\User Data\Default\file_mapping.json" "%DEFAULT%\file_mapping.json"
copy /v "%VIVALDI%\User Data\Default\Login Data" "%DEFAULT%\Login Data"
copy /v "%VIVALDI%\User Data\Default\Preferences" "%DEFAULT%\Preferences"
copy /v "%VIVALDI%\User Data\Default\Secure Preferences" "%DEFAULT%\Secure Preferences"
rem Создаём файл "First Run" - маркер для браузера, что первый запуск и настройка произведены
copy nul "%Temp%\Vivaldi\User Data\First Run"
rem Копируем кастомные логотипы сайтов экспресс-панели (задайте свой путь или переменную)
xcopy "%VIVALDI%\IMG" "%Temp%\Vivaldi\IMG" /s /q /i /v
rem Запускаем процесс создания архива
7za.exe a -tzip "%Temp%\backup.zip" "%Temp%\Vivaldi\"
C:
rem Перемещаем готовый архив, с переименованием <дата, время> в каталог юзера
move "%Temp%\backup.zip" "%END%\%vdate%,%vtime%.zip"
rem Удаляем каталог сбора файлов
rmdir /s /q "%Temp%\Vivaldi"
rem Сигнал завершения =))
rundll32 user32,MessageBeep
rem Открытие папки с готовым архивом
explorer "%END%"
endlocal
exit
Вопрос: Если запустить батник не на системном диске, почему то не отрабатывает команда перемещения (38 строка),
хотя отработали предыдущие команды копирования, когда собирались файлы для архива.
Мои действия: пробовал использовать копирование, отменял переименование в процессе перемещения, использовал свой темп (set myTemp=%Temp%).
Вылечил командой "С:", разместив её строкой выше. Но понимание, так и не пришло - вопрос остался.
Текущие состояние:
Сейчас пишу-тестирую скрипт (Бета), в нём будет: Обнаружение и закрытие всех процессов браузера,
Запуск архиватора по результату поиска, 7-Zip или WinRar, и в зависимости от разрядности системы. А если архиваторов нет, то запуск автономного 7za.
Генерация имени архива по текущей дате и времени, на момент создания, плюс билд-номер браузера (пока не решил откуда брать - есть как минимум 4 варианта).
В планах:
Само-обновляемый sfx-архив.
Буду признателен и рад любой помощи.
Спасибо.
Пытаюсь написать сценарий резервного копирования и архивации, дефолтного юзер-профиля браузера Vivaldi.
Прошу помощи в написании, а именно: обнаружение и указание на правку грубых, а так же нелепых ошибок,
подсказок в виде оптимального кода, поскольку моё понимание кода, приходит только в визуальном сравнении.
По возможности кратко объяснить или точно, с указанием маршрута, послать в раздел справки или к готовым решениям на форуме.
В идеале - всё отточить, сделать всё по фэн-шуй изящней чем предложено мной.
Началось всё здесь (https://forum.vivaldi.net/post/290631) (сказал - делай), а поскольку мои познания в этой теме чуть выше начальных, пришлось сесть за учебники.
Насыщение и передозировка информацией случилась буквально через пару часов, с начала "обучения".
Тому косвенно способствовали: малое количество или полное отсутствие, для наглядности и усвоения, "живых" примеров, а так же мелкий шрифт изданий.
Через выдачу поисковой системы был найден сайт с авторскими статьями Белый Александра Петровича.
Сайт был благополучно загружен на компьютер, и обучение продолжилось в оффлайне. Но и тут, мало примеров для понимания, что и как работает.
Поэтому, начал параллельно читать и треды здесь, на форуме.
В результате появился скрипт (Альфа), для работы из директорий архиваторов «7-Zip» и «WinRar».
Позже, был скачан пакет «7z-extra» с автономным архиватором 7za (7-Zip), и строку его запуска и работы добавил в скрипт.
cls
@echo off
title Backup profile Vivaldi
setlocal
rem Задаём переменную VIVALDI - Путь к каталогу браузера
set VIVALDI=%LocalAppData%\Vivaldi
rem Задаём переменную END, куда будет помещён архив (например "C:\Users\XXXXX\Documents")
set END=%HomePath%\Documents
rem Задаём переменные для создания имени файла архива из текущей даты и времени
set vdate=%date:~-10%
set vtime=%time:~0,-3%
set vtime=%vtime::=.%
rem Задаём переменную DEFAULT и создаём каталог сбора файлов (например в системной "Temp")
set DEFAULT=%Temp%\Vivaldi\User Data\Default
mkdir "%DEFAULT%\"
rem Копируем нужные нам папки из каталога (точнее из "User Data / Default")
xcopy "%VIVALDI%\User Data\Default\databases" "%DEFAULT%\databases" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extension Rules" "%DEFAULT%\Extension Rules" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extensions" "%DEFAULT%\Extensions" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local App settings" "%DEFAULT%\Local App settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Extension settings" "%DEFAULT%\Local Extension settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Storage" "%DEFAULT%\Local Storage" /s /q /i /v
rem Копируем файлы
copy /v "%VIVALDI%\User Data\Default\Bookmarks" "%DEFAULT%\Bookmarks"
copy /v "%VIVALDI%\User Data\Default\Favicons" "%DEFAULT%\Favicons"
copy /v "%VIVALDI%\User Data\Default\file_mapping.json" "%DEFAULT%\file_mapping.json"
copy /v "%VIVALDI%\User Data\Default\Login Data" "%DEFAULT%\Login Data"
copy /v "%VIVALDI%\User Data\Default\Preferences" "%DEFAULT%\Preferences"
copy /v "%VIVALDI%\User Data\Default\Secure Preferences" "%DEFAULT%\Secure Preferences"
rem Создаём файл "First Run" - маркер для браузера, что первый запуск и настройка произведены
copy nul "%Temp%\Vivaldi\User Data\First Run"
rem Копируем кастомные логотипы сайтов экспресс-панели (задайте свой путь или переменную)
xcopy "%VIVALDI%\IMG" "%Temp%\Vivaldi\IMG" /s /q /i /v
rem Запускаем процесс создания архива
7za.exe a -tzip "%Temp%\backup.zip" "%Temp%\Vivaldi\"
C:
rem Перемещаем готовый архив, с переименованием <дата, время> в каталог юзера
move "%Temp%\backup.zip" "%END%\%vdate%,%vtime%.zip"
rem Удаляем каталог сбора файлов
rmdir /s /q "%Temp%\Vivaldi"
rem Сигнал завершения =))
rundll32 user32,MessageBeep
rem Открытие папки с готовым архивом
explorer "%END%"
endlocal
exit
Вопрос: Если запустить батник не на системном диске, почему то не отрабатывает команда перемещения (38 строка),
хотя отработали предыдущие команды копирования, когда собирались файлы для архива.
Мои действия: пробовал использовать копирование, отменял переименование в процессе перемещения, использовал свой темп (set myTemp=%Temp%).
Вылечил командой "С:", разместив её строкой выше. Но понимание, так и не пришло - вопрос остался.
Текущие состояние:
Сейчас пишу-тестирую скрипт (Бета), в нём будет: Обнаружение и закрытие всех процессов браузера,
Запуск архиватора по результату поиска, 7-Zip или WinRar, и в зависимости от разрядности системы. А если архиваторов нет, то запуск автономного 7za.
Генерация имени архива по текущей дате и времени, на момент создания, плюс билд-номер браузера (пока не решил откуда брать - есть как минимум 4 варианта).
В планах:
Само-обновляемый sfx-архив.
Буду признателен и рад любой помощи.
Спасибо.