PDA

Показать полную графическую версию : Резервирование файлов с сравнением по дате создания


Атриарх
20-09-2016, 19:33
Задача копировать файл закладок хрома, если файл обновился, если резервная копия новее то копия ложиться в профиль хрома.
Только скрипт не отрабатывает не могу понять в чем ошибка.
P.S. Скрипт компиляция сходных скриптов переработанная под свою задачу.

::@echo off
SetLocal
::расположение файла закладок хрома
set sourc="%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\"
::расположение для резервных копий
set bak="%UserProfile%\ChromBacup\"

if not exist "%bak%" md "%bak%"

::проверка бекапа закладок
if not exist "%bak%\Bookmarks" goto bak1
if exist "%bak%\Bookmarks" goto bak2

:bak1
cd %sourc% copy /y "Bookmarks" "%bak%" pause
exit

:bak2
cd "%sourc%"
if exist "%bak%" for %%A in ("%sourc%") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%sourc%" "%bak%" else goto rest
pause
exit

:rest
cd "%bak%"
if exist "%sourc%" for %%A in ("%bak%") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%bak%" "%sourc%"
pause
exit

Iska
20-09-2016, 21:24
Только скрипт не отрабатывает не могу понять в чем ошибка. »
Ну, вот, сразу:
cd %sourc% copy /y "Bookmarks" "%bak%" pause »

А это:
if exist "%bak%\Bookmarks" »
вообще лишнее. Причём в обоих упоминаниях.

Атриарх
21-09-2016, 11:20
se »

создает первоначальный файл, паузи добавил для отладки переходов.

cd %sourc% copy /y "Bookmarks" "%bak%"
pause

возможно можно и так

if not exist "%bak%\Bookmarks" goto bak1 else goto bak2

не лишние. без этой проверки скрипт будет выполнятся подряд и будет тупо перезаписывать файл бекапа, без проверки даты...

if exist "%bak%\Bookmarks" »

поправил логику переходов :)

@echo off
SetLocal
::расположение файла закладок хрома
set sourc="%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\"
::расположение для резервных копий
set bak="%UserProfile%\ChromBacup\"

if not exist "%bak%" md "%bak%"

::проверка бекапа закладок
:sw
if not exist "%bak%\Bookmarks" goto bak1
if exist "%bak%\Bookmarks" goto bak2

:bak1
cd %sourc% copy /y "Bookmarks" "%bak%"
goto sw
exit

:bak2
cd "%sourc%"
if exist "%bak%" for %%A in ("%sourc%") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%sourc%" "%bak%" else goto rest
exit

:rest
cd "%bak%"
if exist "%sourc%" for %%A in ("%bak%") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%bak%" "%sourc%"
exit

Iska
21-09-2016, 11:44
создает первоначальный файл, паузи добавил для отладки переходов.
cd %sourc% copy /y "Bookmarks" "%bak%"
pause »
Не сменяет каталог и не копирует файл. Вы по-прежнему пытаетесь использовать несколько команд в одной строке, причём некорректным образом. Вся разница в том, что раньше их было три, теперь — две.

if not exist "%bak%\Bookmarks" goto bak1 else goto bak2
не лишние. без этой проверки …»
Не передёргивайте. Код был другой, и мои слова касались именно его.

Атриарх
21-09-2016, 12:49
Поправил

cd %sourc% & copy /y "Bookmarks" "%bak%"

По логике одно и тоже

if not exist "%bak%\Bookmarks" goto bak1
if exist "%bak%\Bookmarks" goto bak2


if not exist "%bak%\Bookmarks" goto bak1 else goto bak2
»
»

Это все лирика :)
Не работают :bak2 и :rest

Попробую пойти обходным путем и сделаю проверку по размеру файла, тему пока не закрываю.

Текущая версия файла
@echo off
SetLocal
rem расположение файла закладок хрома
set sourc="%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\"
rem расположение для резервных копий
set bak="%UserProfile%\ChromBacup\"

if not exist "%bak%" md "%bak%"
pause
rem проверка бекапа закладок
:sw
if not exist "%bak%\Bookmarks" goto bak1
if exist "%bak%\Bookmarks" goto bak2

:bak1
cd %sourc% copy /y "Bookmarks" "%bak%"
rem первая копия создана
pause
goto sw

:bak2
rem копирование начато
if exist "%bak%\Bookmarks" for %%A in ("%sourc%\Bookmarks") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%sourc%" "%bak%" || goto rest
rem копирование завершено
pause
exit

:rest
rem востановление начато
if exist "%sourc%\Bookmarks" for %%A in ("%bak%\Bookmarks") do echo %%~tA |>nul find "%date%" || >nul copy /y "Bookmarks" "%bak%" "%sourc%"
rem востановление завершено
pause
exit

Iska
21-09-2016, 19:21
Поправил
cd %sourc% & copy /y "Bookmarks" "%bak%"
По логике одно и тоже »
По Вашей логике — может быть одно и то же. По логике командного процессора — нет: предыдущие варианты не могли работать, и не работали.




© OSzone.net 2001-2012