Вытащить значения из реестров нескольких компов
Есть задача. Надо с компов в сети собрать инфу по установленной версии одной проги на каждом.
Надыбал один скрипт:
Цитата:
@echo off
setlocal enableextensions enabledelayedexpansion
>"D:\1.txt" (
>nul chcp 1251
for /f "usebackq delims=" %%i in (
`reg.exe query "\\192.168.56.1\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\M oyaProga"`
) do for /f "usebackq tokens=3*" %%j in (
`reg.exe query "%%~i" /v "DisplayVersion" 2^>nul ^| find.exe /i "DisplayVersion"`
) do echo %%~j %%k|findstr.exe /i /v /r /c:"^Microsoft Visual C++ .* False$"
>nul chcp 866
)
endlocal
exit /b 0
|
В результате появляется файлик 1.txt c нужным мне значением, НО
1. Как сделать так, чтобы просто в какую нибудь переменную вбить через проблем IP-адреса компов по которым будет прогоняться скрипт?
2. Ну и получить результат в файл списком видка
192.168.56.1 - [Значение]
192.168.56.2 - [Значение]
.....и.т.д.
|
вроде приблизительно как-то так
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
>"D:\1.txt" (
>nul chcp 1251
for /f "delims=," %%c in ("192.168.56.1,192.168.56.2") do (
for /f "usebackq delims=" %%i in (
`reg.exe query "\\%%с\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\M oyaProga"`
) do for /f "usebackq tokens=3*" %%j in (
`reg.exe query "%%~i" /v "DisplayVersion" 2^>nul ^| find.exe /i "DisplayVersion"`
) do echo %%c %%~j %%k|findstr.exe /i /v /r /c:"^Microsoft Visual C++ .* False$"
)
>nul chcp 866
)
endlocal
exit /b 0
|
Запустил, но сначала ругается вот так
Потом тупо решил сам reg.exe скопировать рядом с батником, теперь ругается так.
Ну и на худой конец System32, тоже как-то не айс
Если включить echo, то там непонятно что подставляется в адрес вместо IP-шника
Причина в том, что где-то русская "%%с" была. Но почему-то строка только одна в файл выводится
192.168.56.1 4.1.1.0
|
Время: 08:55.
© OSzone.net 2001-