PDA

Zobacz pełną wersję : Pilny problem z plikiem wsadowym (WinNT)



Encor
19-07-2006, 19:04
Wiem, że nie o foto. Mam nadzieję, że mi admini wybaczą (pliiiz:)), ale potrzebuję pilnie pomysłu, bo mam zaćmienie kompletne.

Potrzebuję pilnie napisać batcha, który na wszystkich kompach w domenie NT
4.0 wyszuka i zrzuci do pliku wartość określonego podklucza rejestru.
Ważne, żeby w pliku wynikowym była nazwa kompa, nazwa podklucza i szukana
wartość. Ponieważ część kompów tego podklucza nie ma, w pliku wynikowym
mają się znaleźć tylko wpisy kompów, które go mają.
Napisałem coś takiego:

@echo off
echo Pobieranie nazw stacji w domenie
for /f "skip=3 tokens=1" %%i in ('net view') do echo %%i >> kompy.txt

echo Wyszukiwanie stacji z kluczem "HKLM\SOFTWARE\PROKOM Software
SA\Common\adres_KSI_num_generatora"
for /f %%i in (kompy.txt) do call :check %%i ksi_num_gen.txt

:check
set stacja=%1
set plik_wynikowy=%2
title Connecting to %stacja%

REG query "HKLM\software\prokom software
sa\common\adres_ksi_num_generatora" %stacja% | find
"adres_KSI_num_generatora"

..... no i utknąłem. Za cholerę nie mogę wygłówkować, jak zrobić, żeby w
ostatecznym pliku wynikowym wpisać wynik polecenia REG QUERY i jednocześnie
W TYM SAMYM WIERSZU nazwę stacji.
Reg query samo w sobie wywala nazwę stacji do której się podłącza (ale w osobnym wierszu), więc
można albo korzystać z tego, albo bezpośrednio ze zmiennej %stacja% - tak
przynajmniej kombinuję. Sęk w tym, że nie mogę wykombinować... a problem
jest pewnie banalny (mam zaćmienie chyba:))

Tomasz Golinski
19-07-2006, 19:07
Pierwszy pomysł: rób wpisy w stylu
KOMP1
klucz
//
KOMP2
klucz
//

itd. a potem potraktuj to jakimś windowsowym gawkiem i doprowadz do zalecanej postaci.

mor_feusz
24-07-2006, 15:36
Zrob login script. niech kazdy komp wykona skrypt, i wynik niech wykona sie gdzies na \\jakis_server\jakis_share niech kazdy komp jako wynikowy plik zamiast kompy.txt zrobi plik wynikowy ze zeminna %hostname%, czyli jak masz 20 kompow to niehc kazdy wrzuci do %hostname%.txt (musisz ja zdeklarowac w skrypcie - innaczej klapa. Masz wtedy w katalogu na serverez tyle plikow ile masz stacji z nazwami np. KOMP1.txt, KOMP2.txt i w nich twoje spiste - potem 1 linia z wierasza polecen i zcalaszpliki do 1 i masz to co chciales.

To export all registry to file c:\all.reg, use the /e switch as follows:
regedit /E c:\all.reg
To export a specific registry key to file file.reg, use the /e switch as follows:
regedit /E file.reg <registry_key>, for example
regedit /E c:\hklm_run.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Run" will export list of Startup programs from Run section.
Merge or import file.reg to Registry:
regedit file.reg
Create and replace an existing registry from a file file.reg:
regedit /C file.reg
For silent execution of Regedit command, use the /s parameter. If /S specified, Regedit will be operate quietly, without asking for confirmation.
To delete specific registry key from the registry:
Win 95,98,ME Regedit has switch /d, use it as follows:
regedit /D <registry_key>, for example
regedit /D "HKEY_CLASSES_ROOT\CLSID\{834261E1-DD97-4177-853B-C907E5D5BD6E}" will delete entry of Trojan CWS


Win 2000, XP You can create .reg file and specify in it minus sign before the key name to delete (example - contents of sample file c:\del.reg):

REGEDIT4
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\System]

Now if Regedit will be launched by command regedit c:\del.reg, the key HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\System will be removed from the system registry.
Win 95,98,ME There are several command line switches for specifying location of User.dat (/L) and user name (/R):
regedit /L:c:\windows\user.dat /e c:\test.reg