1.6k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo
Ich bin auf der suche nach einem Befehl in einer Batchdatei. Der Befehl soll abfragen
ob cmd als Administrator ausgeführt wurde und falls das nicht der Fall ist soll man
aufgefordert werden das Programm zu schließen und nochmal als Administrator zu
öffnen. Ich habe diesen Befehl schon irgendwo gesehen... Ich glaube es war in einem
Script, welches die Windows-Fehlermeldungen deaktiviert bzw entfernt.
Da ich diese Zeile schon damals nicht verstanden habe wollte ich euch noch bitten mir
zu erklären was die Zeile Schritt für Schritt macht. Denn wenn ich etwas verstehe dann
kann ich mir das viel besser merken, da ich es nachvollziehen kann.

Freue mich schon auf die Antworten

3 Antworten

0 Punkte
Beantwortet von
Hab sie gerade gefunden^^
NET FILE 1>NUL 2>NUL & IF ERRORLEVEL 1 (ECHO Sie
müssen die Datei mit einem
Rechtsklick und & ECHO "ALS ADMINISTRATOR AUSFÜHREN" öffnen.
& ECHO. & PAUSE
& EXIT /D)


Jetzt brauch ich nur noch eine Erklärung für NET FILE 1>NUL 2>NUL...
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo,

1>NUL 2>NUL legt die Umleitung der Ausgaben des Batches fest.
1 ist STDOUT , also die normalen Textausgaben
2 ist STDERR, also die Fehlerausgabe.
Mit >NUL werden diese Ausgaben in das Null-Device, also ins Nichts umgeleitet. Bei Bedarf, kann anstelle von NUL auch ein File oder ein anderes Device, z.B. ein Drucker angegeben werden.

Gruß
computerschrat
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Die Ausgabeumleitung und damit das Unterdrücken der Textausgabe des Befehls hat ja computerschrat schon beschrieben. Wobei das hier eigentlich Nebensache ist und nur "kosmetischen" Zwecken dient.

Die eigentliche Funktionalität liegt darin, daß der Befehl "NET FILE" (Auflisten aktuell geöffneter freigegebener Dateien) nur einem Administrator erlaubt ist.

Wenn ein Nicht-Administrator den Befehl ausführt, dann kommt es zu einem Fehler und der ERRORLEVEL der Shell wird auf 2 gesetzt (beim Admin auf 0, also "erfolgreich").

Durch das "IF ERRORLEVEL 1" (was eigentlich bedeutet: "wenn ERRORLEVEL 1 oder größer") wird im Fehlerfall die Meldung "Sie müssen..." angezeigt und die Batch beendet.

Ansonsten (also ERRORLEVEL = 0, sprich Administrator führt den Befehl aus) würde die Batch weiter ausgeführt und somit alle nachfolgende Befehlszeilen.

Ich hoffe, das war einigermaßen verständlich ;o)

mfg, Massaraksch
...