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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » как бы добавить в переменные имя ключа реестра и его значение ?

Ответить
Настройки темы
как бы добавить в переменные имя ключа реестра и его значение ?

Старожил


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

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


в общем есть ключи реестра
Код: Выделить весь код
Windows Registry Editor Version 5.00    
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]  
"D:\\1c\\conf\\proekt\\"="proekt"  
"D:\\1c\\conf\\torg\\DemoDB\\"="Конфигурация \"Торговля+Склад\" Демо"  
"D:\\1c\\conf\\bir\\"="bir"  
"D:\\1c\\conf\\torg\\DB\\"="Конфигурация \"Торговля+Склад\""  
"D:\\share\\1SBDemo\\"="Информационная База #1"  
"D:\\Копия союзOld\\2005\\"="Информационная База #2"  
"D:\\share\\496\\"="496"  
"D:\\1c\\tutor\\"="tutor"
мне бы надо получить пути (к примеру D:\\1c\\conf\\proekt\\) и названия (к примеру "proekt") в разные переменные

пытаюсь сделать это командой REG QUERY HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles

и сделать по тому же принципу как в http://forum.oszone.net/thread-67920.html

но почему то не выходит.

поидея след. строка должна бы выдать путь , но она почему-то выдает только часть его

for /f "TOKENS=1 DELIMS=REG_SZ" %%A in ('netsh interface show interface ^| find "REG_SZ"') do echo %%A %%B %%C %%D %%E %%F %%G >> ___1.tmp

Отправлено: 11:28, 15-04-2008

 

Googler


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

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


Цитата mitiya:
надо просто скопировать нужные файлы в базы »
ну смотри, мое дело предупредить:
Код: Выделить весь код
@echo off
SetLocal EnableDelayedExpansion

Set KEY="HKCU\Software\1C\1Cv7\7.7\Titles"

For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %KEY% /s^|Find "REG_SZ"') do (
	Set $PATH=%%i
	Set $NAME=%%j

	@echo.
	@echo Путь  к  файлам:!$PATH:~4!
	@echo Имя базы данных:!$NAME!
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:16, 17-04-2008 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

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


проблема с кракозяброй решается просто командой
CHCP 1251

так-то вроде все выводит правильно, но только я если честно не совсем понял что тут с переменными , это что-то типа массива что ли ?
не могли бы вы немного пояснить код , пожалуйста.

Отправлено: 13:33, 17-04-2008 | #12


Googler


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

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


Цитата mitiya:
проблема с кракозяброй решается просто командой CHCP 1251 »
от текста на экране толку мало, главное чтобы команда дальнейшей обработки поняла кодировку
Цитата mitiya:
это что-то типа массива что ли ? »
нет, это лишь построчный разбор входного текста и вывод на экран в цикле с промежуточным сохранением в переменных, а разве нужно что-то другое?

Отправлено: 17:00, 17-04-2008 | #13


Аватара для hasherfrog

Старый параноик


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

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


mitiya,
но только я если честно не совсем понял что тут с переменными

Дык и мы тоже не очень поняли, чего Вы хотите получить в итоге... :]

Отправлено: 18:20, 17-04-2008 | #14


Старожил


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

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


В итоге хотелось получить переменные вида :
path1=D:\1c\conf\proekt\
name1=proekt

path2=D:\1c\conf\torg\DemoDB\
name2=Конфигурация "Торговля+Склад" Демо

и т.д.

чтоб потом в эти пути и копировать нужные файлы

Отправлено: 22:38, 17-04-2008 | #15


Googler


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

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


Цитата mitiya:
хотелось получить переменные вида »
гм, не вижу в этом смысла... впрочем, вам видней
Код: Выделить весь код
@echo off
SetLocal EnableDelayedExpansion

Set $RKEY="HKCU\Software\1C\1Cv7\7.7\Titles"
Set $iMAX=0

For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %$RKEY% /s^|Find "REG_SZ"') do (
	Set /A $iMAX +=1
	Set $PATH=%%i
	Set $NAME!$iMAX!=%%j
	Set $PATH!$iMAX!=!$PATH:~4!
)

CALL :DISPLAY %$iMAX%
EXIT

:DISPLAY
	Set $iNUM=%1
:LOOP
	@echo.
	@echo $PATH%$iNUM%=!$PATH%$iNUM%!
	@echo $NAME%$iNUM%=!$NAME%$iNUM%!
	
	Set /A $iNUM-=1
	If %$iNUM% GTR 0 GOTO :LOOP
	GOTO :EOF
)

Отправлено: 02:47, 18-04-2008 | #16


Старожил


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

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


вот что у меня получилось .

Там внизу где :

echo Выберете базу

set /p base=

set pathh=dpath%base%

echo %pathh%

Я пытаюсь сделать что нажав циферку 1 (к примеру) переменная pathh получила значение из переменной dpath1 , я так понял что переменные в переменные вкладывать нельзя , думаю что бы предпринять

Код: Выделить весь код
срсз 1251

if exist "___p1.tmp" del "___p1.tmp"
if exist "___n1.tmp" del "___n1.tmp"

SetLocal EnableDelayedExpansion

Set KEY="HKCU\Software\1C\1Cv7\7.7\Titles"

For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %KEY% /s^|Find "REG_SZ"') do (
	Set $PATH=%%i
	Set $NAME=%%j

	@echo.
	@echo !$PATH:~4!>> ___p1.tmp
	@echo !$NAME!>> ___n1.tmp
)


SET N=0
for /f "tokens=* eol=" %%A in (___p1.tmp) do SET /A N+=1

set i=0
:again

if "%I%" == "%N%" goto x1

if exist "___p2.tmp" del "___p2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (___p1.tmp) do (
    if not exist "___p2.tmp" ( 
      Set C=%%A
      echo "" > ___p2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (___p1.tmp) do ( 
    if not exist "___p2.tmp" ( 
      Set C=%%A
      echo "" > ___p2.tmp
    )
  )
)

set /A I+=1
SET dpath%I%=%C%
goto again 





:x1
SET N=0
for /f "tokens=* eol=" %%A in (___n1.tmp) do SET /A N+=1

set i=0
:again2

if "%I%" == "%N%" goto end

if exist "___n2.tmp" del "___n2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (___n1.tmp) do (
    if not exist "___n2.tmp" ( 
      Set C=%%A
      echo "" > ___n2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (___n1.tmp) do ( 
    if not exist "___n2.tmp" ( 
      Set C=%%A
      echo "" > ___n2.tmp
    )
  )
)

set /A I+=1
SET dname%I%=%C%
goto again2 





:end

del ___n1.tmp
del ___n2.tmp


del ___p1.tmp
del ___p2.tmp



cls
echo ____________________
echo #  Всего баз : %N% 
echo ____________________
echo #    Список баз :  #
echo #__________________#



set | find "dname"

echo Выберете базу 

set /p base=

set pathh=dpath%base%

echo %pathh%

pause









:ditect

Последний раз редактировалось mitiya, 18-04-2008 в 13:01.


Отправлено: 12:21, 18-04-2008 | #17


Googler


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

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


Цитата mitiya:
я так понял что переменные в переменные вкладывать нельзя »
можно, один из вариантов применил в двух последних примерах (!VAR1%VAR2%!)
Цитата mitiya:
вот что у меня получилось »
у вас работает?... у меня нет, зато работает вот это:
Код: Выделить весь код
@Echo off
SetLocal EnableDelayedExpansion

Set $RKEY="HKCU\Software\1C\1Cv7\7.7\Titles"
Set $iMAX=0

CHCP 1251 >nul
If Exist %~dpn0.tmp DEL /F/Q %~dpn0.tmp

For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %$RKEY% /s^|Find "REG_SZ"') do (
	Set /A $iMAX +=1
	Set $PATH=%%i
	Set $PATH!$iMAX!=!$PATH:~4!

	CMD /U/C @Echo !$iMAX!: %%j>>%~dpn0.tmp
)

CHCP 866 >nul
CALL :DISPLAY

Set /P $iBase=Выберите базу: 
Echo.
Echo !$PATH%$iBase%!

PAUSE
EXIT


:DISPLAY
:---
CLS
Echo ____________________
Echo  Всего баз : %$iMAX% 
Echo ____________________
Echo  Список баз:
Echo. 
For /F "Skip=2 Delims=" %%i IN ('CMD /U/C Find /V "ЭТОГО В ТЕКСТЕ НЕ ДОЛЖНО БЫТЬ" %~dpn0.tmp') Do Echo %%i
Echo. 

GOTO :EOF
З.Ы. От русских букв в "пути" придется все-таки отказаться (имхо это проще чем наворачивать скрипт)

Отправлено: 12:33, 21-04-2008 | #18


Старожил


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

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


У меня руские буквы отображаются кракозяброй, но копируется все правельно .

вот рабочий код :

Код: Выделить весь код
@echo off

set templ=c:\
set home=%cd%

set chcp1=1251

chcp %chcp1%




if exist "%templ%___p1.tmp" del "%templ%___p1.tmp"
if exist "%templ%___n1.tmp" del "%templ%___n1.tmp"

SetLocal EnableDelayedExpansion

Set KEY="HKCU\Software\1C\1Cv7\7.7\Titles"

For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %KEY% /s^|Find "REG_SZ"') do (
	Set $PATH=%%i
	Set $NAME=%%j

	@echo.
	@echo !$PATH:~4!>> %templ%___p1.tmp
	@echo !$NAME!>> %templ%___n1.tmp
)


SET N=0
for /f "tokens=* eol=" %%A in (%templ%___p1.tmp) do SET /A N+=1

set i=0
:again

if "%I%" == "%N%" goto x1

if exist "%templ%___p2.tmp" del "%templ%___p2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (%templ%___p1.tmp) do (
    if not exist "%templ%___p2.tmp" ( 
      Set C=%%A
      echo "" > %templ%___p2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (%templ%___p1.tmp) do ( 
    if not exist "%templ%___p2.tmp" ( 
      Set C=%%A
      echo "" > %templ%___p2.tmp
    )
  )
)

set /A I+=1
SET dpath%I%=%C%
goto again 





:x1
SET N=0
for /f "tokens=* eol=" %%A in (%templ%___n1.tmp) do SET /A N+=1

set i=0
:again2

if "%I%" == "%N%" goto end

if exist "%templ%___n2.tmp" del "%templ%___n2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (%templ%___n1.tmp) do (
    if not exist "%templ%___n2.tmp" ( 
      Set C=%%A
      echo "" > %templ%___n2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (%templ%___n1.tmp) do ( 
    if not exist "%templ%___n2.tmp" ( 
      Set C=%%A
      echo "" > %templ%___n2.tmp
    )
  )
)

set /A I+=1
SET dname%I%=%C%
goto again2 





:end

del %templ%___n1.tmp
del %templ%___n2.tmp


del %templ%___p1.tmp
del %templ%___p2.tmp



cls
echo #------------------#
echo #  Всего баз : %N% 
echo #------------------#
echo #    Список баз :  #
echo #------------------#
echo -
echo 0=Отменить установку


set | find "dname"

echo Выберете базу 

set /p base=

if %base% LSS 1 (
set mes=Установка отменена
goto off
)

if %base% GTR %N% (
set mes=Выбрана неверная база
goto off
)



set pathh=!dpath%base%!

echo %pathh%

:ditect

find /i "Бухгалтерия" "%pathh%Release.txt"
if not %errorlevel%==0 goto off
find /i "Упрощенная система налогообложения" "%pathh%Release.txt"
if %errorlevel%==0 goto usn
find /i "Бухгалтерия для бюджетных учреждений" "%pathh%Release.txt"
if %errorlevel%==0 goto budg
goto gener


:gener
echo Общая
set vid=General
goto ystan

:usn
echo УСН
set vid=Usn
goto ystan

:budg
echo для бюджетных учреждений
set vid=budget
goto ystan


:off
cls
echo %mes%.
pause
exit

:ystan

cd /d reporting
for /D %%j in (*) do (

	echo %%j

	mkdir "%pathh%ExtForms\%%j"

	copy "%home%\reporting\%%j\%vid%\Forms.new\*.exe" "%pathh%ExtForms\%%j"
	copy "%home%\reporting\%%j\%vid%\Forms.new\ver.id" "%pathh%ExtForms\%%j"


	cd /d "%pathh%ExtForms\%%j"

	del /q SETUP_BARCODELIB.EXE

	for %%i in (*.exe) do echo y | %%i

	del *.exe
)



start %home%\fontinst.exe
set mes=Установка успешно завершена

goto off

Отправлено: 10:14, 22-04-2008 | #19


Googler


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

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


Цитата mitiya:
руские буквы отображаются кракозяброй, но копируется все правельно »
гм... интересно, вот этот код вроде работает и без файлов... почему пока сам не понял
Код: Выделить весь код
@Echo off
SetLocal EnableDelayedExpansion

Set $RKEY="HKCU\Software\1C\1Cv7\7.7\Titles"
Set $iMAX=0

CHCP 1251 >nul
For /F "Tokens=1,3 Delims=	" %%i In ('Reg Query %$RKEY% /s^|Find "REG_SZ"') Do (
	Set /A $iMAX +=1
	Set $PATH=%%i
	Set $NAME!$iMAX!=%%j
	Set $PATH!$iMAX!=!$PATH:~4!
)
Set $PATH=
CHCP 866 >nul

CALL :DISPLAY %$iMAX%

Echo. 
Set /P $iBase=Выберите базу: 
Echo Путь к выбранной базе : "!$PATH%$iBase%!"

Echo. 
PAUSE

Rem Copy *.CMD !$PATH%$iBase%!
EXIT

:DISPLAY
	CLS
	Echo ____________________
	Echo  Всего баз : %1 
	Echo ____________________
	Echo  Список баз:
	Echo. 
	Set $iNUM=1
:LOOP
	Echo %$iNUM%: !$NAME%$iNUM%!
	
	Set /A $iNUM+=1
	If %$iNUM% LEQ %$iMAX% GOTO :LOOP
GOTO :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:21, 22-04-2008 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » как бы добавить в переменные имя ключа реестра и его значение ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как получить имя ветки реестра? garanov AutoIt 11 18-12-2009 12:25
VBS/WSH/JS - Как поменять значение реестра? rromms Скриптовые языки администрирования Windows 2 16-09-2009 19:01
VBS/WSH/JS - [решено] Как добавить "сложное" значение в "бинарный" параметр реестра с помощью WSH 13Demon Скриптовые языки администрирования Windows 1 10-02-2009 09:47
Как создать переменную, имя которой такоеже как значение + несколько латин. символов? E-mail Вебмастеру 12 26-11-2005 10:14
как определить ip у пользователя , ели знаешь только его имя djoniAg Сетевые технологии 7 30-05-2005 19:50




 
Переход