Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Я не читатель, я писатель , поэтому в Вашем коде не сильно копался. Как я понял, Вы выбираете бэкап за определённую дату-время и восстанавливаете все конфиги, которые там есть.
Попробуйте
Код: Выделить весь код
@Echo Off
cls

Set "InMask=C:\Nodes\Ru.*.*"
Set "InFile=Config"
Set "OutDir=C:\Backup"

SetLocal EnableExtensions EnableDelayedExpansion

Set "DirFrom="
FOR /F "usebackq delims=" %%d IN (`Dir "%OutDir%" /A:D /B /O:-D /T:C 2^>nul`) DO (
	Set "Sele="
    	Set /P "Sele=Доступна копия %%d.  Восстанавливаем (Y), Далее (?), Закончить (Enter) "
	If /I "!Sele!"=="Y" Set "DirFrom=%%d" &GoTo :Continue
	If /I Not "!Sele!"=="?" GoTo :Eof
)
:Continue

If "%DirFrom%"=="" (
	Echo Папка с восстанавливаемыми копиями не выбрана
	Pause
	GoTo :Eof
)

Set "Log=%~dpnx0.log"

Set "OutDir=%OutDir%\%DirFrom%"

FOR /F "usebackq delims=" %%d IN (`Dir "%InMask%" /A:D /B /S 2^>nul`) DO (
	If Exist "%%d\%InFile%" If Exist "%OutDir%\%%~nxd\" (
		Echo "%OutDir%\%%~nxd\*.*" ---^> "%%d\%InFile%\"
	 	Copy "%OutDir%\%%~nxd\*.*" "%%d\%InFile%\" >nul && Echo "%OutDir%\%%~nxd\*.*" ---^> "%%d\%InFile%\" >>"%Log%" 
	)  
)
Я не пошел по пути нумерации бэкапов - а что, если их список на экран не поместится, как выбирать? Я предоставляю возможность выбрать конкретный бэкап начиная с самого свежего.
Чтобы не было зюкочек в диалогах и сообщениях - сохраните батник в 866 кодировке.
Повторюсь, мне всё это не нравится, при нескольких пользователях такие неконтролируемые возможности приведут к конфликтам.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 21-10-2016 в 19:04.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:32, 21-10-2016 | #12