Показать полную графическую версию : Резервирование файлов с сравнением по дате создания
Задача копировать файл закладок хрома, если файл обновился, если резервная копия новее то копия ложиться в профиль хрома.
Только скрипт не отрабатывает не могу понять в чем ошибка.
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
Только скрипт не отрабатывает не могу понять в чем ошибка. »
Ну, вот, сразу:
cd %sourc% copy /y "Bookmarks" "%bak%" pause »
А это:
if exist "%bak%\Bookmarks" »
вообще лишнее. Причём в обоих упоминаниях.
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
создает первоначальный файл, паузи добавил для отладки переходов.
cd %sourc% copy /y "Bookmarks" "%bak%"
pause »
Не сменяет каталог и не копирует файл. Вы по-прежнему пытаетесь использовать несколько команд в одной строке, причём некорректным образом. Вся разница в том, что раньше их было три, теперь — две.
if not exist "%bak%\Bookmarks" goto bak1 else goto bak2
не лишние. без этой проверки …»
Не передёргивайте. Код был другой, и мои слова касались именно его.
Поправил
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
Поправил
cd %sourc% & copy /y "Bookmarks" "%bak%"
По логике одно и тоже »
По Вашей логике — может быть одно и то же. По логике командного процессора — нет: предыдущие варианты не могли работать, и не работали.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.