docbrown
Goto Top

Login Scripts für Fortgeschrittene

Infos zu Loginscripten mit anlegen von Outlookprofilen und Signaturen

Dieses Script ist noch nicht fertig, ich stelle es aber trotzdem einmal Online vielleicht kann ich damit schon jemand helfen.



back-to-topAllgemeine Befehle


back-to-topEcho ON/OFF
Echo OFF = Blendet nur Rückgabewerte der Befehle ein
Echo ON = Blendet alles ein

back-to-topREM
Erstellung von Kommentaren
REM ======Begin Login Script ========


back-to-topSET
Variablen deklaration
SET NAME=Ich bin der Peter
echo %Name%
Ich bin der Peter

back-to-topGOTO
Sprungmarke

REM START
GOTO PETER

REM ZIEL
:PETER

back-to-top>/ >>
um Ergebnisse von aufrufen zu speichern

Beispiel 1
Echo Peter > C:\Text.txt
REM Bei diesem Aufruf wird das Wort Peter in 
REM die Datei C:\Text geschrieben, wenn die 
REM Datei besteht wird jeglicher Inhalt gelöscht.
Beispiel 2
Echo Peter > C:\Text.txt
Echo Maria >> C:\Text.txt
REM Bei diesem Beispiel wird das Wort Peter in 
REM der ersten Zeile und das Wort Maria in der 
REM zweiten Zeile geschrieben.

Dies ist sehr nützlich wenn man sich eine Dokumentation des Loginvorganges erstellen lassen will.

back-to-topfindstr
Durchsucht eine Datei oder Variable nach einem bestimmten Wert.

%Computername% = PC-Peter

SET >>"C:\computername.txt"   
REM Speichert die Computervariablen in C:\computername.txt

findstr /C:"PC-" "C:\computername.txt"  
REM Durchsucht die Datei C:\computername.txt nach dem Wert "PC-"  

if not errorlevel 1 goto XYZ
Wenn "PC-" in der Datei vorkommt springt er an die stelle XYZ im Script  

So kann man z.B. den Benutzern von Notebooks die den Standort öfters wechseln:

Standort1 = 192.168.0.
Standort2 = 192.168.1.

Standort1 = Fileserver1
Standort2 = Fileserver2

verschiedene Login Scripte zuweisen ohne etwas umzustellen.

ipconfig >"C:\ipconfig.txt"   
REM schreibt die werte von IP Config in C:\ipconfig.txt

findstr /C:"192.168.0." "C:\ipconfig.txt"  
if not errorlevel 1 goto Standort1

REM Durchsucht die Datei C:\ipconfig.txt nach dem Wert "192.168.0."! Wenn dieser vorkommt, springt er weiter zu Standort1  

findstr /C:"192.168.1." "C:\ipconfig.txt"  
if not errorlevel 1 goto Standort2

REM Durchsucht die Datei C:\ipconfig.txt nach dem Wert "192.168.1."! Wenn dieser vorkommt, springt er weiter zu Standort2  

:Standort1
NET USE L: \\Fileserver1\Daten
exit

:Standort2
NET USE L: \\Fileserver2\Daten
exit

Content-Key: 98761

Url: https://administrator.de/contentid/98761

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: 36831
36831 08.10.2008 um 17:35:00 Uhr
Goto Top
Zitat von @DocBrown:
back-to-topSET
Variablen deklaration
> SET NAME="Ich bin der Peter"  
> echo %Name%
> "Ich bin der Peter"  
> 
Hier würde ich noch Anmerken, dass bei deiner Variante die Anführungszeichen mit in der Variable deklariert sind. Wenn man die Anführungszeichen nicht mit in der Variable stehen haben möchte, können diese weggelassen werden.
++++ << / < / >/ >>
Wo erklärst du < und << ? Ich sehe leider nur > und >>.
um Ergebnisse von aufrufen zu speichern

Echo Peter > C:\Text.txt
REM Bei diesem Aufruf wird das Wort Peter in 
REM die Datei C:\Text geschrieben, wenn die 
REM Datei besteht wird jeglicher Inhalt gelöscht.
Soweit richtig, außer, dass du noch das .txt hinter C:\Text packen könntest.
Echo Peter >> C:\Text.txt
Echo Maria >> C:\Text.txt
REM Bei diesem Beispiel wird das Wort Peter in 
REM der ersten Zeile und das Wort Maria in der 
REM zweiten Zeile geschrieben.
Da muss ich dir leider widersprechen. Denn in der 1. Zeile steht ja schon der Peter von deinem Echo Peter > C:\Text.txt - Also sind es die 2. und die 3. Zeile.
ipconfig >"C:\ipconfig.txt"   
REM schreibt die werte von IP Config in C:\ipconfig.txt
U.U. ist es hier Sinnvoller,
netsh interface ip dump
zu verwenden.

Außer den Anmerkungen sieht das aber ganz ordentlich aus.

MfG,
VW
Mitglied: DocBrown
DocBrown 08.10.2008 um 19:26:48 Uhr
Goto Top
face-smile danke dir habs schon angepasst. werde die Anleitung nach und nach erweitern deswegen war bei >> noch nix drin.
Mitglied: bastla
bastla 08.10.2008 um 19:38:32 Uhr
Goto Top
... und wenn doch "ipconfig", dann vielleicht etwas abgekürzt:
ipconfig|findstr /C:"192.168.0.">nul && (  
    REM Standort1
    NET USE L: \\Fileserver1\Daten
    goto :eof
)
ipconfig|findstr /C:"192.168.1.">nul && (  
    REM Standort2
    NET USE L: \\Fileserver2\Daten
    goto :eof
)
oder noch kürzer (wenn tatsächlich nur ein Laufwerksmapping erfolgen soll):
ipconfig|findstr /C:"192.168.0.">nul && (NET USE L: \\Fileserver1\Daten & goto :eof)  
ipconfig|findstr /C:"192.168.1.">nul && (NET USE L: \\Fileserver2\Daten & goto :eof)  
Zu beachten wäre noch, dass es auch keines der beiden Netze sein könnte ...

Grüße
bastla
Mitglied: DocBrown
DocBrown 08.10.2008 um 23:07:30 Uhr
Goto Top
ich glaube zu diesem Thema würde es sich lohnen eine Extra Homepage zu machen.
Mitglied: danielj
danielj 14.10.2008 um 09:13:41 Uhr
Goto Top
Erst einmal danke für das Howto.

Wir nutzen unsere Firmennotebooks auch für private Zwecke und leider müsste ich dann für jeden Mitarbeiter ein seperates Script erstellen, da der zweite IP-Bereich meist unterschiedlich ist.

Da ich mich mit dem scripten nur annäherungsweise auskenne habe ich folgendes versucht:

findstr /C:"192.168.0." "C:\ipconfig.txt"  
if not errorlevel 1 goto Standort1
otherwise goto Standort2

Derzeit scheint alles Problemlos zu funktionieren.
Mitglied: DocBrown
DocBrown 14.10.2008 um 09:31:27 Uhr
Goto Top
freut mich das ich helfen konnte face-smile
Mitglied: DerWoWusste
DerWoWusste 20.12.2008 um 20:46:15 Uhr
Goto Top
"ipconfig >"C:\ipconfig.txt"" - das würd' ich mal auf %temp%\ipconfig.txt ändern, unter c: lassen zum Beispiel Server 2008 und Vista keine Speicherung zu face-smile
Mitglied: bastla
bastla 20.12.2008 um 23:10:41 Uhr
Goto Top
@DerWoWusste

Der Hinweis auf %temp% ist sehr sinnvoll face-smile ...

... obwohl ich in diesem Fall (wie oben schon gezeigt) die Datei ganz weglassen und die Ausgabe von "ipconfig" direkt filtern/auswerten oder zumindest (wenn viele Möglichkeiten zu prüfen wären, also vermutlich sehr selten face-wink) die IP in eine Variable anstelle der Datei schreiben würde:
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /i "ip-adress"') do set IP=%%i  
echo %IP%|findstr /c:"192.168.0.">nul && (NET USE L: \\Fileserver1\Daten & goto :eof)   
echo %IP%|findstr /c:"192.168.1.">nul && (NET USE L: \\Fileserver2\Daten & goto :eof)   
Und um auch noch den Fall "mehrere IP-Adressen" abzudecken als Ersatz für die Zeile 1:
set IP=
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr /i "ip-adress"') do call set IP=%%IP%%%%i  
Grüße
bastla