WinFuture-Forum.de: Batch Skript: Wert mehrerer Registry Keys auslesen und in Datei schre - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch Skript: Wert mehrerer Registry Keys auslesen und in Datei schre


#1 Mitglied ist offline   morphi01 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 13. Juli 12
  • Reputation: 0

geschrieben 15. Juli 2012 - 09:01

Tach zusammen,

ich habe folgendes Problem, was ich mit einem Batch Skript lösen möchte.

Unter diesem Registry Pfad HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers befinden sich alle installierten Drucker. Im dem Printers Ordner befinden sich dann widerum alle Drucker, die nach ihrem Druckernamen bezeichnet sind.

Ich möchte nun von allen Druckern in einer for Schleife für jeden Drucker den eingetragenen Wert vom "Port"rausfinden und in eine beliebige Datei schreiben.
Bedingung für den eingetragenen Wert ist, dass er mit IP_ anfangen muss (sprich ich möchte alle IP-Adressen der netzfähigen Drucker haben), wenn nicht, dann durchsuche nächsten drucker.

Ich habe schon überall geguckt und es selber versucht, aber ich finde immer nur Fälle, wo nur ein bestimmter Wert gefunden werden soll, aber nicht, wie man nach mehreren Werten sucht und diese in eine Datei schreibt.

Wäre klasse, wenn ihr mir bei dem Problem helfen könntet.

Gruß
0

Anzeige



#2 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 15. Juli 2012 - 12:38

Willkommen im Forum.

Drucker.cmd

Zitat

@echo off & setlocal enabledelayedexpansion
reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers>%temp%\p.txt /s /v Port
cd /d %temp%
for /f "tokens=*" %%i in ('type p.txt^|findstr /e "Printer"') do set p=%%i&call :l

del "%temp%\p.txt">nul
echo Verfgbare Drucker:&echo.
:l3
set /a ur+=1
if %ur% GTR %maxir% echo.&pause&exit
echo !p%ur%! - !ip%ur%!
goto :l3

:l
set /a dr+=1
set p%dr%=%p:~63%
call :ip
goto :eof

:ip
for /f "tokens=1 delims=[]" %%i in ('type p.txt^|find /c "IP_"') do set maxir=%%i
for /f "tokens=3" %%i in ('type p.txt^|find "IP_"') do set ip=%%i&call :l2
goto :eof
:l2
set /a ir+=1
if %ir% GTR %maxir% goto :eof
set ip%ir%=%ip%
goto :eof

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 15. Juli 2012 - 14:58

1

#3 Mitglied ist offline   morphi01 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 13. Juli 12
  • Reputation: 0

geschrieben 16. Juli 2012 - 10:44

Danke schonmal.

Wo genau legt das Skript mir die txt Datei denn ab?
Im C:\Temp Ordner finde ich die Datei p.txt nicht. Muss ich beim Ausführen der cmd Datei irgendwas beachten, damit es klappt?
0

#4 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 16. Juli 2012 - 11:10

%tmp% ist nicht C:\Temp. Du findest es am einfachsten heraus, indem du in die Adressleiste %temp% eingibst und schaust, wo der Explorer dich da hinbringt.
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

#5 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 16. Juli 2012 - 16:10

Die Datei p.txt wirst du sowieso nicht finden, da sie wieder nach der Ausgabe gelöscht wird.

Ansonsten folgende Codezeile entfernen:
del "%temp%\p.txt">nul

Und wie Kirill schon sagte %temp% ist nicht C:\Temp.
Einfach in den Explorer oben %temp% eingeben- dann siehst du wo es hingespeichert wird.

Unter Windows7 ist das im Normalfall: C:\Users\USERNAME\AppData\Local

Edit:
Nein beachten musst du nix

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 16. Juli 2012 - 16:12

0

#6 Mitglied ist offline   morphi01 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 13. Juli 12
  • Reputation: 0

geschrieben 17. Juli 2012 - 09:55

Danke für eure Hilfe, hab jetzt das, was ich haben wollte.
Kann somit von meiner Seite her geschlossen werden.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0