Я не читатель, я писатель
, поэтому в Вашем коде не сильно копался. Как я понял, Вы выбираете бэкап за определённую дату-время и восстанавливаете все конфиги, которые там есть.
Попробуйте
Код:
@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 кодировке.
Повторюсь, мне всё это не нравится, при нескольких пользователях такие неконтролируемые возможности приведут к конфликтам.