Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 2873 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 ..
Ähnliche Inhalte
Entwicklung
gelöst Powershell: Computernamen eingeben (10)

Frage von honeybee zum Thema Entwicklung ...

Windows Server
gelöst MDT 2013 Computername von Datenbank (7)

Frage von Hansi1985 zum Thema Windows Server ...

Entwicklung
gelöst Powershell Script: In Forest nach Computernamen suchen (13)

Frage von Agilolfinger zum Thema Entwicklung ...

Batch & Shell
gelöst Batch Eingabe in Datei schreiben (2)

Frage von MedicalAd zum Thema Batch & Shell ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (27)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (23)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
gelöst Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (14)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...