Показать полную графическую версию : запрос в реестр удаленной машины, и выполнение действия по условию
опять начал вспоминать батники.. тяжко..
имеем список машин, подключаемся к каждой последовательно, имя компа обозначается переменной %%i
Далее собсно запрашиваем список юзеров на машине, чтоб найти меня
for /f %%a in ('reg query \%%i\hku') do (
reg query "\%%i\%%a\Volatile Environment"
и если находящийся в этой ветке ключ username =myname,
то выполнить действие. Допустим, сменить дефолтную раскладку на англ для этого юзера.
собсно вопрос, как?
REG QUERY "\%%i\%%a\Volatile Environment" /v Username |find "Myname" >nul
if not errorlevel 1 echo выполнить действие
echo выполнить действие - замените на желаемое действие
спасибо
Строку цикла for при таком разделителе уже не надо? Я что-то синтаксис не понял.
да, а почему переменную не подменяет именем машины?
В батнике
reg add "\%%i\HKEY_USERS\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
В логе -
D:\Bats>reg add "\%i\HKEY_USERS\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
ERROR: Invalid key name.
Type "REG ADD /?" for usage.
хотя в строке выше имя машины прекрасно ресолвится, и между этими строками нет отмены переменной
net use \\%1 /d
- оно ниже.
и в строке как вы описали, лог даёт -
D:\Bats>for /F %a in ('reg query \%i\hku') do (
REG QUERY "\%i\%a\Volatile Environment" /v Username | find "myname" 1>nul
if not errorlevel 1 reg add "\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00000409
)
ERROR: Invalid key name.
Type "REG QUERY /?" for usage.
а не может-ли тут влиять как-то недоступность разделов кроме HKCU & HKLM на удаленной машине?
Попробуйте такой тестовый вариант с переменной:
@echo off
set file=c:\regcomplist.txt
for /f "Tokens=*" %%g in (%file%) do (
echo %%g>> c:\regquery.txt
reg query "\\%%g\HKU\Volatile Environment">> c:\regquery.txt
echo.>> c:\regquery.txt
echo.>> c:\regquery.txt
)
c:\regcomplist.txt - писок ваших ПК
Как отрабатывает??
Так же добавьте еще один слэш перед переменной и проверяйте:
REG QUERY "\\%%i\%%a\Volatile Environment" /v Username |find "Myname" >nul
c:\regcomplist.txt - писок ваших ПК
Как отрабатывает?? »
у нас в принципе по паролю доступ даёт, но аналогичный код выдаёт
%i
%i
добавьте еще один слэш перед переменной и проверяйте: »
D:\Bats>reg add "\\%i\HKU\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ
/D 00000409 /F
ERROR: The network path was not found.
D:\Bats>pause
Press any key to continue . . .
D:\Bats>for /F %a in ('reg query \\%i\hku') do (
REG QUERY "\\%i\%a\Volatile Environment" /v Username | find "myname" 1>nul
if not errorlevel 1 reg add "\\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D
00000409 /F
)
ERROR: The network path was not found.
...
D:\Bats>for /F %a in ('reg query \\%i\hku') do (
REG QUERY "\\%i\%a\Volatile Environment" /v Username | find "myname" 1>nul
if not errorlevel 1 reg add "\\%i\%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D
00000409 /F
)
ERROR: The network path was not found.
D:\bats\Bats>pause
Press any key to continue . . .
D:\bats\Bats>QUERY "\\%i\%a\Volatile Environment" /v Username | find "myname
" 1>nul
Invalid parameter(s)
QUERY { PROCESS | SESSION | TERMSERVER | USER }
апд
@echo ON
set DomainUser=kontora\myuser
set /P DomainPassword=password...
set FILELOG=%~n0.log
set PCLIST=AD3.txt
if exist %FILELOG% set PCLIST=%FILELOG%
for /f "tokens=*" %%i in (%FILELIST%) do call :ENGLISH %%i
goto RETURN
:ENGLISH
rem echo %%i>> D:\bats\regquery.txt
rem reg query "\\%%i\HKU\Volatile Environment">> D:\bats\regquery.txt
rem echo.>> D:\bats\regquery.txt
rem echo.>> D:\bats\regquery.txt
reg add "\\%%i\HKU\.DEFAULT\Keyboard Layout\Preload" /V 1 /T REG_SZ /D 00000409 /F
pause
for /f %%a in ('reg query \\%%i\hku') do ( REG QUERY "\\%%i\%%a\Volatile Environment" /v Username |find "myuser" >nul
if not errorlevel 1 reg add "\\%%i\%%a\Keyboard Layout\Preload" /V 1 /T REG_SZ /D 00000409 /F
)
pause
:return
ERROR: The network path was not found.
на каждую из 2х строку запросов
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.