Все,
Я пытаюсь сделать разностное резервное копирование с помощью svnadmin dump --incremental
commmand.Моя идея настолько проста: прочитать несколько репозиториев SVN с помощью команды dir и поместить в текстовый файл с именем «input», читать его построчно и помещать в переменные.
Получить последнюю ревизию репозиториев с помощьюполный сценарий резервного копирования и запись в текстовый файл с именем «output» и помещение в переменные.
Все сделано, но я не могу использовать дамп svnadmin, потому что мне нужны переменные (массивы) внутри циклов.Как мне это сделать?Пожалуйста, помогите мне, я пробовал так много раз и до сих пор не работает):
@echo off
cls
:: =================== CONFIG ============================================
:: Path of the dir containing your repos [Note Trailing slash]
SET repodir=E:\svn\repositorios
:: Path of the dir in which to create you dumps [Note Trailing slash]
SET repodump=E:\Backup\SVN
:: File to read (multiple directories)
SET "File2ReadInput=E:\Backup\SVN\input.txt"
SET "File2ReadOutput=E:\Backup\SVN\output.txt
SET "File2ReadOutputNew=E:\Backup\SVN\New\output_new.txt
:: =================== CONFIG ============================================
:: =================== SCRIPT ============================================
rem deleting old file output.txt
del E:\Backup\SVN\output.txt
rem deleting old file output_new.txt
del E:\Backup\SVN\New\output_new.txt
rem creating new file output.txt
for /f "delims=" %%f in ("E:\Backup\SVN\*.data") do type %%f >> E:\Backup\SVN\output.txt
rem creating input file
dir %repodir% /ad /b > E:\Backup\SVN\input.txt
rem reading input file
setlocal EnableExtensions EnableDelayedExpansion
for /f "delims=" %%a in ('Type "%File2ReadInput%"') do (
set /a count+=1
set "Line[!count!]=%%a"
)
For /L %%i in (1,1,%Count%) do (
echo "Var%%i" is assigned to ==^> "!Line[%%i]!"
echo E:\svn\repositorios\!Line[%%i]!
set REPO_NAME=!Line[%%i]!
:: getting new transactions to compare
for /F "delims=" %%g in ('svnlook youngest E:\svn\repositorios\!Line[%%i]!') do (
echo %%~g
) > E:\Backup\SVN\New\last_rev_!Line[%%i]!_new.data
)
:: creating a new file with new datas
for /f "delims=" %%h in ("E:\Backup\SVN\New\*.data") do type %%h >> E:\Backup\SVN\New\output_new.txt
rem reading output file (dento do segundo for porque eu preciso do !Line[%%i]!)
setlocal EnableExtensions EnableDelayedExpansion
for /f "delims=" %%b in ('Type "%File2ReadOutput%"') do (
set /a out_count+=1
set "Output[!out_count!]=%%b"
)
for /L %%n in (1,1,%out_count%) DO (
echo "Var%%n" is assigned to ==^> "!Output[%%n]:~0,-1!"
set PREVIOUS=!Output[%%n]!
)
for /F "delims=" %%u in ('svnadmin dump -r!Output[%%n]:~0,-1!:HEAD E:\svn\repositorios\!Line[%%i]! --incremental') do (
echo %%~u
)> > E:\Backup\SVN\svn_backup_diff_!Line[%%i]!.dmp