31 июля 2019 г.

Excel В разных окнах (2010) bat

Внизу листинг кода для командной строки, который правит ветки реестра для открытия книг Excel в разных окнах.
Создан потому что после установки обновлений настройки приходится вбивать заново.
Скопировать, вставить в блокнот, сохранить с расширением bat
Выполнять от администратора

(после первого запуска - сохранить выгруженные файлы)


echo off
set strin=0
rem корневые ветки реестра
set regQ8=HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open
set regQ12=HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open
rem Имена Файлов выгрузки
set regF8=sheet8.reg
set regF12=sheet12.reg

cd %~dp0

CALL :startScript %regQ8% %regF8%
CALL :startScript %regQ12% %regF12%
GOTO :EOFy

:startScript
echo.
echo #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
set NamePathReg=%1
set NameFileReg=%2
set modify=0

rem найти ветки и параметры
reg query %NamePathReg%\command >2>nul
if errorlevel 1 (
   echo # ОШИБКА: Ветка %NamePathReg% не найдена
   GOTO :EXIT
)
rem Выполнить экспорт
reg export %NamePathReg% %NameFileReg% /y >2>nul
if errorlevel 1 (
 echo # ОШИБКА: Экспорт %NamePathReg% в %NameFileReg% НЕ выполнен
 GOTO :EXIT
)
echo # УСПЕШНО: Экспорт %NamePathReg% в %NameFileReg% выполнен

rem Выполнить преобразование файла
CALL :REPLACE %NameFileReg%

if %modify%==0 (
 echo # ТЕКСТ: Параметры не были изменены. 
 GOTO :EXIT
)
echo # УСПЕШНО: Параметры подготовлены для загрузки

rem выполнить удаление ветки
reg delete %NamePathReg% /f >2>nul
if errorlevel 1 (
 echo # ОШИБКА: Удаление ветки %NamePathReg% провалилось.
 GOTO :EXIT
)
echo # УСПЕШНО: Удаление ветки прошло %NamePathReg% успешно.

rem выполнить загрузку
reg import %NameFileReg%_NEW.reg >2>nul
if errorlevel 1 (
 echo # ОШИБКА: Импорт файла %NameFileReg%_NEW.reg провалился.
 GOTO :EXIT
)
echo # УСПЕШНО: Импорт файла %NameFileReg%_NEW.reg прошел успешно.



echo #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
GOTO :EXIT

:REPLACE
Setlocal EnableDelayedExpansion
if %1 == "" ( GOTO :EOF )
set modify=0
rem echo %1
del %1_NEW.reg
chcp 1251 >nul
for /f "tokens=* delims=," %%i in ('type %1') do (
 set strin=%%i
 rem правим dde в обычном режиме
 
 echo !strin!|findstr "\/dde" >nul
 set LevelError=!errorlevel!
 if !LevelError! == 0 (
  set strin=!strin:/dde=\"%%1\"! 
  set modify=1
 ) 
 
 rem правим dde в hex
 
 echo !strin!|findstr "2f,00,64,00,64,00,65,00,00,00,00,00" >nul
 set LevelError=!errorlevel!
 if !LevelError! == 0 (
  set strin=!strin:2f,00,64,00,64,00,65,00,00,00,00,00=22,00,25,00,31,00,22,00,00,00,00,00!  
  set modify=1
 )
 
 echo !strin!|findstr "ddeexec" >nul
 set LevelError=!errorlevel!
 if !LevelError! == 0 (
  GOTO :m
 )
 echo !strin!>>%1_NEW.reg
 rem echo !modify!
)
:m
chcp 866 >nul
EndLocal&Set modify=%modify%
Setlocal DISABLEDELAYEDEXPANSION

GOTO :EXIT

:EOFy
echo.
echo #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
echo #..............................................              .............................................#
echo #........................                          ВЫХОД                          ........................#
echo #..............................................              .............................................#
echo #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
rem exit /b
:EXIT
exit /b

Комментариев нет:

Отправить комментарий