Avatar billede oergaard Nybegynder
13. november 2005 - 13:52 Der er 10 kommentarer og
1 løsning

Batch program, der kan udføre bestemt handling ud fra netværk.

Idet jeg bruger min bærbar på tre forskellige netværk, har jeg brug for en lille batch program, der kan ændre standardprinter ud fra hvilket netværk jeg er ved. Lad os for nemheds skyld kalde de tre netværk for hhv. NET1, NET2 og NET3.

Jeg ved man kan ændre standardprinter indstillingerne via en batch fil med følgende kommando: RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "PRINTERNAVN". Det jeg har brug for er, en batch kode til at udføre følgende:

    IF EXISTS NET1 RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "PRINTERNET1"
    ELSE IF EXISTS NET2 RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "PRINTERNET2"
    ELSE RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "PRINTERNET3"

Håber der er nogen der kan hjælpe mig.

//Oergaard
Avatar billede bertelbrander Novice
13. november 2005 - 23:08 #1
Det største problem er at finde ud af hvilket net man er på. Har du nogen idé til hvordan man kunne gøre det? Evt. output fra en dos-kommando der kunne analyseres, f.ex. en af net xxx?
Avatar billede oergaard Nybegynder
14. november 2005 - 10:24 #2
Jeg har arbejdet på at finde en løsning i stil med det du skriver, men, hvis den findes, det må siges, at ligge uden for mine evner. :-(
Avatar billede bertelbrander Novice
14. november 2005 - 22:49 #3
Prøv at køre følgende kommandoer på de tre net, og se om der er noget af det de skriver der kan bruges til at finde ud af hvilket net du er på:
ipconfig /all
net statistics server
net config server

Hvis der er det bør det være trivielt at lave en bat-fil der parser det kommandoen skriver.
Avatar billede oergaard Nybegynder
16. november 2005 - 10:14 #4
Ved brug af ipconfig kommer der nogle informationer, som jeg kan bruge. Jeg er dog ikke helt klar over hvordan jeg skal/kan trække de ønskede data ud.
Avatar billede oergaard Nybegynder
16. november 2005 - 10:24 #5
Jeg har rent faktisk fundet en løsning selv, men synes ikke det virker særlig godt, idet den er meget langsommelig.

Koden jeg har brugt er som følgegde:
IF MULIGT_AT_LOGGE_IND_PÅ_NET1 THEN
  VÆLG PRINTERNET1
ELSE IF MULIGT_AT_LOGGE_IND_PÅ_NET2 THEN
  VÆLG PRINTERNET2
ELSE
  VÆLG PRINTERNET3

Som skrevet er denne løsning meget langsom, idet den skal vente på login-timeout, ved hvert forsøg. I mine øjne: en løsning, men LANGT FRA en god løsning.
Avatar billede bertelbrander Novice
16. november 2005 - 19:50 #6
Hvis man kan bruge ipadressen fra ipconfig:
@echo off
for /F "tokens=2 delims=:" %%I in ('ipconfig ^|findstr Standardgateway') do set IpAddress=%%I
set IpAddress=%IpAddress: =%
if [%IpAddress%]==[192.168.2.1] (
  echo IpAddress Match 1
)
if [%IpAddress%]==[192.168.2.113] (
  echo IpAddress Match 2
)

Det virker med en dansk XP Home, det skal måske justeres lidt med andre Windows versioner.
Avatar billede oergaard Nybegynder
17. november 2005 - 07:55 #7
Hvis din løsning virker kan jeg så få dig til at knytte et par kommentarer til din kode, så jeg også kan lære lidt af den? :-)

Jeg er rent fysisk kun ved det ene netværk d.d., hvorfor jeg ikke har mulighed for, at se om din kode virker. Jeg har dog kontaktet to kollegaer, som muligvis vender tilbage med oplysningerne. :-)
Avatar billede bertelbrander Novice
17. november 2005 - 20:30 #8
Det er egentligt ret simpelt:
ipconfig kender du, output fra denne pipes over i findstr med |, da det er i en for kommando må vi "escape" den med ^
findstr finder alle linier der indeholder Standardgateway (der er kune en)
for delen parser alle linier (der er stadig kun en) og deler den ved : (pga delims=:)
tokens=2 fortæller at vi vil have anden token, dvs det efter :
%%I bliver sat til dette og vi sætter IpAddress
Denne linie "set IpAddress=%IpAddress: =%" fjerner alle mellemrum i linien
Resten er blot at checke ip-adresse
Avatar billede oergaard Nybegynder
18. november 2005 - 11:39 #9
Jeg takker mange gange, det virker lige efter hensigten. :-)

bertelbrander > Hvis du lige gider, at smide et svar så skal du få nogle velfortjente points. :-)

//Oergaard
Avatar billede bertelbrander Novice
18. november 2005 - 20:08 #10
Jeg samler ikke på point.
Avatar billede oergaard Nybegynder
19. november 2005 - 15:37 #11
I så fald skal du få noget god karma. :-)

Jeg takker mange gange for hjælpen :-)

//Oergaard
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester