2013-08-29 3 views
1

Так что я пытаюсь облегчить жизнь своим техникам, поскольку они иногда забывают установить определенную вещь на вновь отформатированном ПК.Запуск .reg в файле .bat

Ive удалось настроить часть настройки мощности, но у меня возникли проблемы с десятичными символами и форматом даты. У меня есть полный экспорт HKEY_USERS.DEFAULT \ Control Panel \ International точно так же, как я хочу, но им не удалось помещать его в текущий файл bat, так как я НЕ ДЕЙСТВИТЕЛЬНО хочу больше, чем 1 файл для их запуска. Поэтому я подумал, что может быть здорово, если бы поместил значение реестра в пакетный файл и, возможно, запустил его как отдельную оболочку? я ничего не советовал бы. Вот что я до сих пор.

Bat файл:

FOR /F "tokens=3 delims= " %%G IN ('wmic os get Caption /value') DO SET _version=%%G 
echo %_version% 

IF %_version%==XP (
POWERCFG /setactive "always on" 
POWERCFG /Change "always on" /monitor-timeout-ac 0 
POWERCFG /Change "always on" /monitor-timeout-dc 0 
POWERCFG /Change "always on" /disk-timeout-ac 0 
POWERCFG /Change "always on" /disk-timeout-dc 0 
POWERCFG /Change "always on" /standby-timeout-ac 0 
POWERCFG /Change "always on" /standby-timeout-dc 0 
POWERCFG /Change "always on" /hibernate-timeout-ac 0 
POWERCFG /Change "always on" /hibernate-timeout-dc 0 
) ELSE (
POWERCFG /Change /monitor-timeout-ac 0 
POWERCFG /Change /monitor-timeout-dc 0 
POWERCFG /Change /disk-timeout-ac 0 
POWERCFG /Change /disk-timeout-dc 0 
POWERCFG /Change /standby-timeout-ac 0 
POWERCFG /Change /standby-timeout-dc 0 
POWERCFG /Change /hibernate-timeout-ac 0 
POWERCFG /Change /hibernate-timeout-dc 0 
) 

pause 

значение реестра я хочу в файле летучей мыши:

[HKEY_USERS\.DEFAULT\Control Panel\International] 
"Locale"="00001c09" 
"LocaleName"="en-ZA" 
"s1159"="AM" 
"s2359"="PM" 
"sCountry"="South Africa" 
"sCurrency"="R" 
"sDate"="/" 
"sDecimal"="." 
"sGrouping"="3;0" 
"sLanguage"="ENS" 
"sList"="." 
"sLongDate"="dd MMMM yyyy" 
"sMonDecimalSep"="." 
"sMonGrouping"="3;0" 
"sMonThousandSep"=" " 
"sNativeDigits"="" 
"sNegativeSign"="-" 
"sPositiveSign"="" 
"sShortDate"="dd/mm/yyyy" 
"sThousand"=" " 
"sTime"=":" 
"sTimeFormat"="hh:mm:ss tt" 
"sShortTime"="hh:mm tt" 
"sYearMonth"="MMMM yyyy" 
"iCalendarType"="1" 
"iCountry"="27" 
"iCurrDigits"="2" 
"iCurrency"="2" 
"iDate"="2" 
"iDigits"="2" 
"NumShape"="1" 
"iFirstDayOfWeek"="6" 
"iFirstWeekOfYear"="0" 
"iLZero"="1" 
"iMeasure"="0" 
"iNegCurr"="2" 
"iNegNumber"="1" 
"iPaperSize"="9" 
"iTime"="0" 
"iTimePrefix"="0" 
"iTLZero"="1" 

ответ

3

, если вам это нужно в пакетном файле, попробуйте следующее:

@echo off & setlocal 
for %%a in (
    "Locale=00001c09" 
    "LocaleName=en-ZA" 
    "s1159=AM" 
    "s2359=PM" 
    "sCountry=South Africa" 
    "sCurrency=R" 
    "sDate=/" 
    "sDecimal=." 
    "sGrouping=3;0" 
    "sLanguage=ENS" 
    "sList=." 
    "sLongDate=dd MMMM yyyy" 
    "sMonDecimalSep=." 
    "sMonGrouping=3;0" 
    "sMonThousandSep= " 
    "sNativeDigits=" 
    "sNegativeSign=-" 
    "sPositiveSign=" 
    "sShortDate=dd/mm/yyyy" 
    "sThousand= " 
    "sTime=:" 
    "sTimeFormat=hh:mm:ss tt" 
    "sShortTime=hh:mm tt" 
    "sYearMonth=MMMM yyyy" 
    "iCalendarType=1" 
    "iCountry=27" 
    "iCurrDigits=2" 
    "iCurrency=2" 
    "iDate=2" 
    "iDigits=2" 
    "NumShape=1" 
    "iFirstDayOfWeek=6" 
    "iFirstWeekOfYear=0" 
    "iLZero=1" 
    "iMeasure=0" 
    "iNegCurr=2" 
    "iNegNumber=1" 
    "iPaperSize=9" 
    "iTime=0" 
    "iTimePrefix=0" 
    "iTLZero=1" 
    ) do for /f "tokens=1*delims==" %%b in ("%%~a") do (
     REG ADD "HKEY_USERS\.DEFAULT\Control Panel\International" /v "%%~b" /t REG_SZ /d "%%~c" /f 
     FOR /f "tokens=2*" %%d IN ('REG QUERY "HKEY_USERS\.DEFAULT\Control Panel\International" /v "%%~b" 2^>nul^| find "REG_SZ"') DO (
      IF NOT "%%~c"=="%%~e" ECHO ERROR reading "%%~e" IN %%b, "%%~c" is NOT SET 
     ) 
    ) 
) 

Я добавил Conrol код (REG QUERY) для чтения реестра после записи значений.
Перед запуском кода сделайте резервную копию из реестра, если это необходимо.

+0

Кажется, что изменение значений в реестре не меняется. Даже при работе с администратором –

+0

работает здесь с XP и win8. – Endoro

+0

@ user2728293 Я добавил код управления, чтобы прочитать реестр после написания новых значений. Если значение не установлено, появляется сообщение об ошибке. Пожалуйста, попробуйте сейчас. – Endoro

1

Вы можете импортировать .reg файл непосредственно с regedit. Просто запустите regedit /S yourfile.reg в своем пакетном файле.

/S скрывает окно с подтверждением.

Для получения более подробной информации см. http://www.robvanderwoude.com/regedit.php.

Смежные вопросы