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ß
Seite 1 von 1
Batch Skript: Wert mehrerer Registry Keys auslesen und in Datei schre
Anzeige
#2 _d4rkn3ss4ev3r_
geschrieben 15. Juli 2012 - 12:38
Willkommen im Forum.
Drucker.cmd
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
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
#3
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?
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?
#4
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);}
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#5 _d4rkn3ss4ev3r_
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
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
#6
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.
Kann somit von meiner Seite her geschlossen werden.
- ← WCF Webservice codebehind-Datei auf Server verfügbar machen
- Skript/Web-Programmierung
- Internetverbindung prüfen →
Thema verteilen:
Seite 1 von 1