Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch der zwischen Ip-Ranges oder Computernamen unterscheidet und dementsprechenden Standartdrucker auswählt

Frage Entwicklung Batch & Shell

Mitglied: Hans.ds

Hans.ds (Level 1) - Jetzt verbinden

16.03.2012, aktualisiert 21.03.2012, 2849 Aufrufe, 12 Kommentare

Hallo Zusammen

Ich will einen Batch schreiben, der die IP-Ranges aussliesst und dementsprechend den richtigen Drucker als Standartdrucker nimmt. Wir haben hier 2 Zimmer und in jedem sind 13 Notebooks. Da sollte nun ein Batch beim Start ausgeführt werden, der auslieest in welchem Zimmer(Range) man sich befindet und dann diesen Drucker als Standart nimmt. Vileicht könnte man es auch mit dem Computernamen einteilen, da sie ebenfalls die Zimmernummer enthalten.

Bis jetzt habe ich ein wenig was rumprobiert, bin aber nie wirklich auf was richtiges gekommen. =(

01.
::Variable setzen 
02.
set pc=%computername:~0,6% 
03.
set zimmer=%computername:~6,2% 
04.
set pcnr=%computername:~9,2% 
05.
 
06.
:: Drucker für Zimmer 23 Mappen 
07.
if "%zimmer%"=="23" ( 
08.
	rundll32 printui.dll,PrintUIEntry /in /n /y \\10.65.8.199\ 
09.
10.
:: Drucker für Zimmer 24 Mappen 
11.
if "%zimmer%"=="24" ( 
12.
	rundll32 printui.dll,PrintUIEntry /in /n /y \\10.65.10.199\ 
13.
)
Details:


IP des ersten Zimmers -> 10.65.8.x
Laptopnamen -> LAPUEK23-01 , LAPUEK23-02, LAPUEK23-03 u.s.w ---> die 23 steht für das Zimmer <---
Drucker -> 10.65.8.199


IP des zweiten Zimmers -> 10.65.10.x
Laptopnamen -> LAPUEK24-01 , LAPUEK24-02, LAPUEK24-03 u.s.w ---> die 24 steht für das Zimmer <---
Drucker -> 10.65.10.199



Bitte um ausführliche Hilfe/Lösungen.

Freundliche Grüsse

Hans

[Edit Biber] Codeformatierung [/Edit]
Mitglied: bastla
16.03.2012 um 16:08 Uhr
Hallo Hans.ds und willkommen im Forum!

Sorry, ich sehe das Problem nicht - Dein Batch sollte doch bereits funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Hans.ds
16.03.2012 um 16:42 Uhr
Eben leider nicht. Ich habe es öfters ausprobiert aber leider ging der Standartdrucker nie. Also es änderte den Drucker nicht. Muss ich ausser der IP Adresse des Druckers noch den Namen oder irgendwas angeben?


Gruss Hans
Bitte warten ..
Mitglied: HubertN
16.03.2012 um 16:50 Uhr
Moin

Zitat von bastla:
Sorry, ich sehe das Problem nicht - Dein Batch sollte doch bereits funktionieren ...


Also ich sehe es schon...

Mit dem Parameter /in wird die Verbindung zu einem freigegebenen Netzwerkdrucker eingerichtet. Dazu gehört dann aber auch der Syntax \\<Server>\<Freigabe>

Gruß

Hubert


edit: Die Zuweisung abhängig von der IP-Adresse ist übrigens denkbar einfach:
01.
ping -4 -n 1 %computername% | find "10.65.8" && rundll32 printui.dll,PrintUIEntry  (...)
Bitte warten ..
Mitglied: bastla
16.03.2012 um 16:52 Uhr
Hallo Hans.ds!

Hatte leider nur das Zerlegen des Computernamens getestet ...
Muss ich ausser der IP Adresse des Druckers noch den Namen oder irgendwas angeben?
Ja, und vor allem die Parameter in der richtigen Reihenfolge einsetzen - der Name muss nach "/n" angegeben werden, daher diesen Parameter als letzten verwenden ...

Grüße
bastla

[Edit] @HubertN: Jetzt hab ich's auch gesehen [/Edit]
Bitte warten ..
Mitglied: Hans.ds
16.03.2012 um 17:11 Uhr
::Variable setzen

set pc=%computername:~0,6%
set zimmer=%computername:~6,2%
set pcnr=%computername:~9,2%
:: Drucker für Zimmer 23 Mappen
if "%zimmer%"=="23" (
rundll32 printui.dll,PrintUIEntry /in /n Lexmark UEK23 /y 10.65.8.199
)
:: Drucker für Zimmer 24 Mappen
if "%zimmer%"=="24" (
rundll32 printui.dll,PrintUIEntry /in /n Lexmark UEK24 /y
10.65.10.199
)



Wäre das so den nun richtig?
Oder braucht es // vor dem Namen? (Kenn mich da nicht sehr gut aus)


Gruss und ein schönes Wochenende
Bitte warten ..
Mitglied: HubertN
16.03.2012 um 17:14 Uhr
Nein

lies mal hier: http://www.gruppenrichtlinien.de/index.html?/howto/rundll32_printui.htm

noch mal edit: irgendwie habe ich auch das Gefühl, dass du keinen Netzwerkdrucker im eigentlichen Sinne hast. Wenn du den Drucker als lokalen Drucker verbinden willst, der über das Netzwerk auf der angegebenen IP erreichbar ist, dann kann das so nicht funktionieren. Dein Script setzt voraus, dass du irgendwo einen Server hast, an dem der Drucker freigegeben ist.
Bitte warten ..
Mitglied: Hans.ds
21.03.2012 um 14:05 Uhr
Hallo Hubert,

Danke für deine Antwort.

Der Druckerbefehl war falsch. Hab ich nun abgeändert. Ich habe nun etwas zusammebgebastelt, jedoch liesst er bei mir nicht die LAN Adresse aus, sonder die Wireless :S Hab das ganze schon umgestellt und durchgeschüttelt aber ich komm auf nichts brauchbares Das Ziel ist es ja, von der LAN Adresse die 3 Oktette auslese zu können und dann damit weiterarbeiten.

Hier die beiden Varianten die ich gemacht habe, aber nicht ganz funktionieren.

Bei diesem hier liesst es die Wlan anstatt die Lan Adresse aus.


@echo off &setlocal
:: IP-Adresse extrahieren. (Auf Win7 die IPv4-Adresse.)
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /i "IPv4-Adresse"') do (
for /f "tokens=3 delims=. " %%j in ("%%i") do set "Range=%%j"
)

:: Was haben wir bis jetzt? (später entfernen)
echo %Range%
pause

:: Drucker verbinden (exemplarisch, Server und Druckerfreigabename anpassen)
:: Drucker verbinden (exemplarisch, Server und Druckerfreigabename anpassen)
if %Range%==8 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK23
if %Range%==10 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK24


Hier gibt es die richtige 3 Oktette, aber komischerweise kann ich sie nacher nicht weiterverwenden. Sobald ich sie mit einem echo &&i ausgebe, funktioniert es wieder garnicht mehr.


@echo off
for /f "tokens=13 skip=6 delims=." %%i in ('ipconfig') do echo %%i & goto out
:out
pause


Danke für Antworten
Bitte warten ..
Mitglied: bastla
21.03.2012 um 15:58 Uhr
Hallo Hans.ds!

Laufvariablen von "for"-Schleifen existieren nur, solange die Schleife noch läuft - aber wenn Du nur den ersten gefundenen Wert verwenden willst, kannst Du so vorgehen:
01.
@echo off & setlocal 
02.
set "Range=" 
03.
for /f "tokens=13 skip=6 delims=." %%i in ('ipconfig') do if not defined Range set "Range=%%i" 
04.
echo %Range%
Ein "pause" am Ende sollte nicht nötig sein, denn das Testen von Batches wirst Du doch hoffentlich durch Aufruf aus einer CMD-Shell heraus vornehmen ...

Grüße
bastla
Bitte warten ..
Mitglied: Hans.ds
21.03.2012 um 16:56 Uhr
Danke Bastla

Funktioniert einwandfrei!!

Hier noch der fertige Code
01.
@echo off & setlocal 
02.
set "Range=" 
03.
for /f "tokens=13 skip=6 delims=." %%i in ('ipconfig') do if not defined Range set "Range=%%i" 
04.
echo %Range% 
05.
 
06.
 
07.
:: Drucker verbinden (exemplarisch, Server und Druckerfreigabename anpassen) 
08.
:: Drucker verbinden (exemplarisch, Server und Druckerfreigabename anpassen) 
09.
if %Range%==8 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK23 
10.
if %Range%==10 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK24
Bitte warten ..
Mitglied: Hans.ds
23.03.2012 um 09:33 Uhr
Habe hier noch eine andere Lösung nun. Da er auch funktionieren würde wenn das 3 Oktett nicht in der 7 Zeile steht..

01.
@echo off & setlocal  
02.
set "Range=" 
03.
:: und nun das 3. Oktett aus der 1. gefundenen IPv4 Adresse extrahieren: 
04.
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /i "ipv4-adr"') do ( 
05.
  for /f "tokens=3 delims=. " %%j in ("%%i") do if not defined Range set "Range=%%j" 
06.
07.
 
08.
echo %Range% 
09.
 
10.
 
11.
 
12.
:: Drucker verbinden (exemplarisch, Server und Druckerfreigabename anpassen) 
13.
:: Wenn Range auf 8 ist nimmt er UEK23 Drucker, wenn er auch 10 ist, nimmt er UEK24 Zimmer 
14.
if %Range%==8 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK23 
15.
if %Range%==10 rundll32 printui.dll,PrintUIEntry /y /n Lexmark_T654_UEK24
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
IDE & Editoren
gelöst IP und DNS per Batch ändern (9)

Frage von andyw5 zum Thema IDE & Editoren ...

Batch & Shell
gelöst Batch um mehrere IP-Adressen via Ping auf Erreichbarkeit zu prüfen (5)

Frage von Galindiesel zum Thema Batch & Shell ...

Microsoft
Computernamen anhand des OS festlegen per Batch (8)

Frage von Janni2007 zum Thema Microsoft ...

Humor (lol)
Der Unterschied zwischen USA und USB

Link von BirdyB zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...