powershell -Command "(Get-Content '%~f0') -join \"`r`n\" | Set-Content '%~f0'"
more +3 "%~f0" > "sync_tmp.txt"
move /y "sync_tmp.txt" "%~f0" && del sync_tmp.txt && exit
title Sync is starting
echo off
chcp 65001
cls
setlocal enabledelayedexpansion
:1
title Зеркальный синхронизатор
net session >nul 2>&1
if !errorlevel! neq 0 (
choice /c 12 /n /m "Запустить от имени администратора? (1 - да, 2 - нет):"
)
if !errorlevel! equ 1 powershell -Command "Start-Process 'cmd.exe' -ArgumentList '/c \"\"%~f0\" admin\"' -Verb RunAs" && exit
echo публичная бета - обратная связь samirkon12@hotmail.com
echo.
echo Программа в запущенном состоянии синхронизирует папки
echo в зеркальном режиме, и в целевой папке будут удалены файлы,
echo отсутствующие в исходной папке.
echo.
echo Введите папку, из которой будут передаваться файлы. 
echo Если папка была задана, то оставьте пустым чтобы не вносить изменения
echo.
set /p source="Введите исходную папку: "
:chk1
if not exist !source! echo Исходная папка !source! не найдена && set /p source="Введите снова исходную папку: " && cls && if not exist !source! goto chk1
echo.
echo Введите папку, в которую будут передаваться файлы. 
echo Если папка была задана, то оставьте пустым чтобы не вносить изменения
echo.
set /p dest="Введите целевую папку: "
:chk2
if not exist !dest! echo Целевая папка !dest! не найдена && set /p dest="Введите снова целевую папку: " && cls &&  if not exist !dest! goto chk2
cls
echo.
echo Исходная папка: !source!
echo Целевая папка: !dest!
set /p timer="Интервал передачи: "
echo Оставить пустым, чтобы не настраивать
set /p tt="Проходов копирования: "
if !tt!=="" set tt=0
cls
echo.
echo Исходная папка: !source!
echo Целевая папка: !dest!
echo Интервал передачи: !timer! сек
if !tt! NEQ "0" echo Проходов копирования: !tt!
echo.
choice /c 123 /n /m "Начать? (1 - да, 2 - нет, 3 - включить логирование): "
if !errorlevel! equ 1 (
:sync
set /a tt1=!tt! + 1
if !times! lss !tt1! (
robocopy !source! !dest! /mir /e /w:1 /r:1
set /a times=!times! + 1
FOR /L %%i IN (0,1,!timer!) DO (
	title Синхронизация. Осталось !remain! сек. !times!-й проход из !tt!
	echo Прошло %%i сек
	set /a remain=!timer! - %%i
	echo До следующей синхронизации !remain! сек
	timeout /t 1 /nobreak >nul
	cls
	if !remain! lss 1 goto sync
)
) else (
echo Выполнено !times! проходов.
pause >nul
cls
goto 1
)
)
if !errorlevel! equ 2 echo Операция отменена && goto 1
if !errorlevel! equ 3 (
title Синхронизация. Осталось !remain! сек. Логи сохраняются в sync_log.txt.
:sync1
robocopy !source! !dest! /mir /e /w:1 /r:1 /log:sync_log.txt
FOR /L %%i IN (1,1,!timer!) DO (
	echo Прошло %%i сек
	set /a remain=!timer! - %%i
	echo До следующей синхронизации !remain! сек
	timeout /t 1 /nobreak >nul
	cls
	if !remain! lss 1 goto sync1
)
)
goto 1