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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как вытащить путь из реестра и подставить его в нужное место?

Ответить
Настройки темы
CMD/BAT - [решено] Как вытащить путь из реестра и подставить его в нужное место?

Новый участник


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

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


День добрый.

Сейчас мозгую на тем чтобы сделать скрипт который будет брать путь из реестра:

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home2]
"ORACLE_HOME"="C:\\app\\username\\product\\11.2.0\\client_2"

к этому пути подставлять "\network\admin\" и копировать туда файл с заменой.

Need help/

Отправлено: 10:41, 28-04-2011

 

Googler


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

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


Код: Выделить весь код
set $file=c:\TEST\file.txt
set $rkey=HKLM\SOFTWARE\ORACLE\KEY_OraClient11g_home2

for /f "tokens=2*" %%a in ('reg query "%$rkey%" /v ORACLE_HOME^|Find "REG_SZ"') do set "$path=%%b"
copy /y "%$file%" "%$path%\network\admin\"
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:05, 28-04-2011 | #2



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

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


Новый участник


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

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


@echo off
set reg_path=hkcu\Console
set reg_param=WindowSize
reg query "%reg_path%" /v "%reg_param%" >1.txt
for /F "tokens=1,2,3" %%a in (1.txt) do if "%%a"=="%reg_param%" set reg_value=%%c
echo %reg_value%

Пусть вытащили, как теперь подсунуть к нему "\network\admin" ?

Отправлено: 11:06, 28-04-2011 | #3


Новый участник


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

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


amel27

Бооольшое спасибо )

Отправлено: 11:32, 28-04-2011 | #4


Аватара для volk1234

Старовер


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

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


Привет всем.
Не стал создавать новую тему, вопрос небольшой:

Я сделал скрипт который читает значение ключа реестра

Код: Выделить весь код
For /F "Skip=1 Tokens=3*" %%i In ('Reg Query "%Regkey4%" /V TimeZoneKeyName') Do Set TZKN=%%i%%j
Echo %TZKN%
Pause
все успешно, но ключ состоит из трех слов разделенных пробелом: Standart Russian Time.
В переменную он передается в виде StandartRussian Time, т.е. два первых слова "слиплись". Как их разделить?

-------

Ю-ху!


Отправлено: 18:04, 12-10-2011 | #5


Ветеран


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

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


volk1234, желательно приводить полный код, а не огрызок, дабы не надо было додумывать:
Код: Выделить весь код
 Regkey4=HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Time Zones

Попробуйте так (указав разделителем табуляцию):
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "skip=3 tokens=3 delims=	" %%i In ('reg.exe query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Time Zones" /v TimeZoneKeyName') do set TZKN=%%i

if defined TZKN echo %TZKN%

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

Отправлено: 20:20, 12-10-2011 | #6


Аватара для El Sanchez

Ветеран


Contributor


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

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


volk1234, поставить пробел Set TZKN=%%i %%j. Но skip при разборе вывода reg лучше не применять из-за разных версий reg. Чтобы выделить нужную строку в WinXP отфильтровать нужно 3 строки (как в примере Iska), ваш пример для Wn7, т.к. пропускается 1 строка да и разбить вывод надо немного иначе:
Код: Выделить весь код
for /f "tokens=2*" %%i in ('Reg Query "%Regkey4%" /V TimeZoneKeyName 2^>nul^|find /i "REG_SZ" 2^>nul') do Set TZKN=%%j
Echo %TZKN%

Последний раз редактировалось El Sanchez, 13-10-2011 в 14:59. Причина: :)

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

Отправлено: 21:09, 12-10-2011 | #7


Аватара для volk1234

Старовер


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

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


El Sanchez
у Вас ошибка в скрипте- в конце должно быть %%j

-------

Ю-ху!

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

Отправлено: 23:17, 12-10-2011 | #8


Ветеран


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

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


Цитата El Sanchez:
Чтобы выделить нужную строку в WinXP отфильтровать нужно 3 строки (как в примере Iska), ваш пример для Wn7, т.к. пропускается 1 строка да и разбить вывод надо немного иначе: »
Угу. Тут не так давно, помнится, рассматривался этот вопрос. Может быть, даже именно Вами.

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

Отправлено: 01:22, 13-10-2011 | #9


Аватара для volk1234

Старовер


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

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


Я извиняюсь, что не указал окружение - именно этот пакет должен работать в XP/2003/Vista/7/2008r2.
Я взял предложенный El Sanchez вариант и на Семерке он корректно отработал. Конечно мне надо, чтобы он отрабатывал и на других системах- эта трока самая важная- она определяет часовой пояс с которым работает пользователь и бэкапит его.

Вот полный код скрипта:
читать дальше »
Код: Выделить весь код
@Echo off

Rem Belarus timezone change utility(UTC+3 Minsk)
Rem (c) volk1234 01/10/2011
Rem mail to volk1234@mail.ru
Rem v 0.4

:set_start_time

Set start_time=%TIME:~0,-3%
Set start_time=%start_time::=%
Set start_time=%start_time: =0%
Set start_time=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%start_time%

Rem Detecting OS,language and current tz registry key name
:DetectEnv
For /F "Skip=1 Tokens=3" %%A In ('Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language" /V InstallLanguage') Do Set OSLang=%%A

For /F "Skip=1 Tokens=3" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V CurrentVersion') Do Set OSver=%%A

If %OSver% GTR 5.2 (
Set Regkey4=HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
) Else (
Set Regkey4=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Time Zones
)

For /F "Tokens=2*" %%i In ('Reg Query "%Regkey4%" /V TimeZoneKeyName 2^>nul^|find /i "REG_SZ" 2^>nul') Do Set TZKN=%%j

Rem Setting Variables
:TZVARS

Set Regkey1=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\%TZKN%
Set Regkey2=HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Set TZIdata="4cffffff00000000c4ffffff0000000000000000000000000000000000000000000000000000000000000000"
Set TZIdata2="88ffffff00000000c4ffffff00000a0000000500030000000000000000000300000005000200000000000000"
Set Dllres1="@tzres.dll,-1730"
Set Dllres2="@tzres.dll,-1731"
Set Dllres3="@tzres.dll,-1732"
Set DisplayEn="(UTC+03:00) Minsk"
Set DisplayRu="(UTC+03:00) ЊЁ*бЄ"
Set DltEn=Minsk Daylight Time
Set StdEn=Minsk Standard Time
Set DltRu=ЊЁ*бЄ®Ґ ўаҐ¬п («Ґв®)
Set StdRu=ЊЁ*бЄ®Ґ ўаҐ¬п (§Ё¬*)
Set Backupdir="%TEMP%\TZBY\%start_time%"
Set Regkey3=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\%StdEn%

If %OSLang%==0419 (
Set DLT=%DltRu%
Set STD=%StdRu%
Set DSPL=%DisplayRu%
Goto :Regbackup
)

If %OSLang%==0409 (
Set DLT=%DltEn%
Set STD=%StdEn%
Set DSPL=%DisplayEn%
Goto :Regbackup
)

Exit /b1

Rem Backup regisry
:Regbackup

If Not Exist %Backupdir% MD %Backupdir%

REG EXPORT "%Regkey1%" %Backupdir%\TZ.reg >nul
REG EXPORT "%Regkey2%" %Backupdir%\TZI.reg >nul

Echo @Echo Off>>%Backupdir%\restore_tz.cmd
Echo. >>%Backupdir%\restore_tz.cmd
Echo Regedit /s TZ.reg>>%Backupdir%\restore_tz.cmd
Echo Regedit /s TZI.reg>>%Backupdir%\restore_tz.cmd
Echo Reg Delete "%Regkey3%" /f>>%Backupdir%\restore_tz.cmd
Echo. >>%Backupdir%\restore_tz.cmd
If %OSver% LEQ 5.2 (
Echo Tzchange /c "%TZKN%">>%Backupdir%\restore_tz.cmd
)
If %OSver% GTR 5.2 (
Echo Tzutil /s "%TZKN%">>%Backupdir%\restore_tz.cmd
)
Echo. >>%Backupdir%\restore_tz.cmd
Echo Exit /b0>>%Backupdir%\restore_tz.cmd

Rem Main: making settings for timezone utc +0300 Minsk
:SettingTZ

REG ADD "%Regkey3%" /v Dlt /t REG_SZ /d "%StdRu%" /f >nul
REG ADD "%Regkey3%" /v Std /t REG_SZ /d "%StdRu%" /f >nul
REG ADD "%Regkey3%" /v Display /t REG_SZ /d %DSPL% /f >nul
REG ADD "%Regkey3%\Dynamic DST" /v 2010 /t REG_BINARY /d %TZIdata2% /f >nul
REG ADD "%Regkey3%\Dynamic DST" /v 2011 /t REG_BINARY /d %TZIdata% /f >nul
REG ADD "%Regkey3%\Dynamic DST" /v FirstEntry /t REG_DWORD /d 0x000007da /f >nul
REG ADD "%Regkey3%\Dynamic DST" /v LastEntry /t REG_DWORD /d 0x000007db /f >nul
REG ADD "%Regkey3%" /v TZI /t REG_BINARY /d %TZIdata% /f >nul

If %OSver% GTR 5.2 (

      REG ADD "%Regkey3%" /v MUI_Display /t REG_SZ /d %Dllres1% /f >nul
      REG ADD "%Regkey3%" /v MUI_Std /t REG_SZ /d %Dllres2% /f >nul
      REG ADD "%Regkey3%" /v MUI_Dlt /t REG_SZ /d %Dllres3% /f >nul
      
      REG ADD "%Regkey2%" /v StandardName /t REG_SZ /d %Dllres2% /f >nul
      REG ADD "%Regkey2%" /v DaylightName /t REG_SZ /d %Dllres2% /f >nul
      REG ADD "%Regkey2%" /v DynamicDaylightTimeDisabled /t REG_DWORD /d 0x00000001 /f >nul
      REG ADD "%Regkey2%" /v TimeZoneKeyName /t REG_SZ /d "%StdEn%" /f >nul
      
      tzutil /s "%StdEn%"
)

If %OSver% LEQ 5.2 (

    tzchange /c "%StdEn%"
)


Exit /b0

-------

Ю-ху!


Отправлено: 10:26, 13-10-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как вытащить путь из реестра и подставить его в нужное место?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Как указать путь к исполняему файлу и запустить его (Visual Studio 2010) steff Программирование и базы данных 3 22-03-2011 07:46
Загрузка - [решено] Что сжирает свободное место? И вообще, что можно удалять не нужное? tararim Microsoft Windows 2000/XP 7 28-11-2010 23:03
CMD/BAT - [решено] Как и где из реестра считать путь к папке ...\System32\ Drongo Скриптовые языки администрирования Windows 4 29-07-2010 14:17
Нужна програма для автоматического скачивание из интернета в нужное время нужное мест Месроп Хочу все знать 6 10-12-2009 21:19
как бы добавить в переменные имя ключа реестра и его значение ? mitiya Программирование и базы данных 21 23-04-2008 11:54




 
Переход