Auf der Arbeit sind die PCs fortlaufend beschriftet und die letzten 3 Zeichen ist der Raum, also z.B. PC22-123 ist der 22. PC in Raum 123. Die Räume sind dabei IMMER dreistellig, d.h. in Raum 42 wäre der Raum 042.
Mit einem kleinen Perlskript im Autostart bekommt man seinen gewünschten Drucker anhand des Hostnames:
use Sys::Hostname; $host = hostname; chomp($host); $raumnr=substr($host,length($host)-3,length($host)-1); print "Host: " . $host . "\n"; print "RaumNr: " . $raumnr . "\n"; if ($raumnr == 123) { system('rundll32 printui.dll,PrintUIEntry /y /n "Drucker_Raum_123"'); } elsif (...) else { print "Computername nicht im richtigen Format"; }
Den Hostname bekommt man vom System über sys::hostname. chomp() entfernt eventuelle newline characters. Mittels substr() bekommt man einen Teilstring zurück, der von der Länge-3 bis Länge -1 geht, also genau die letzten 3 Buchstaben bzw. Zahlen. Hier hat man dann die Raumnummer. Anhand derer wird mit der rundll ein Standarddrucker gesetzt(/y) der in Anführungszeichen hinter /n steht. Damit sich die Anführungszeichen nicht in die Quere kommen, nimmt man für den system() Befehl die einstelligen Hochkommata.