Forum: PC-Programmierung Batch-Datei funktioniert nicht, wenn sie über „als Administrator ausführen“ gestartet wird


von Guido C. (guidoanalog)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe unter Windows 7 die folgende, einfache Stapelverarbeitungsdatei 
(Batch-Datei) geschrieben:

1
whoami /groups
2
pause

Die Datei ist unter
"D:\Infos & Dokus\Software\MyBatchFiles\MyTestBatchFile.bat"
abgelegt.

Wenn ich die Stapelverarbeitungsdatei unter einem "normalen" Benutzer 
mittels Doppelklick starte funktioniert alles wie gewünscht. Die 
Gruppenmitgliedschaft des angemeldeten Benutzers wird angezeigt und die 
Stapelverarbeitungsdatei pausiert bis eine Eingabe durch den Benutzer 
erfolgt.

Mein Problem tritt auf, wenn ich die Stapelverarbeitungsdatei über die 
Option "als Administrator ausführen" starte. In diesem Fall geht nach 
der Eingabe des Passworts kurz ein Fenster auf, das sofort wieder 
geschlossen wird. Mit etwas Glück konnte ich eine Bildschirmkopie des 
Fensters anfertigen. Ich habe sie im Anhang beigefügt.

Ich bin hier etwas ratlos. Beim Starten der Stapelverarbeitungsdatei 
scheint Windows den Pfad mit den Leerzeichen nicht mehr richtig zu 
interpretieren. Was läuft hier falsch?

Mit freundlichen Grüßen
Guido

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

mach doch mal eine CMD als Administrator auf und starte dort das Batch.

von wendelsberg (Gast)


Lesenswert?

Das steht doch ganz klar in der Fehlermeldung:

Er kann die Datei "D:\Infos" nicht finden.
Auch heute noch gilt: Leerzeichen, Sonderzeichen und Umlaute haben in 
Datei- und Verzeichnisnamen nicht vorzukommen.

Ja, ich weiss, dass das natuerlich unter Win$ angeblich erlaubt ist, 
aber offensichtlich weiss Win$ das selbst noch nicht immer.

wendelsberg

von Guido C. (guidoanalog)


Lesenswert?

Hallo,

Peter II schrieb:
> mach doch mal eine CMD als Administrator auf und starte dort das Batch.

wenn ich eine Eingabeaufforderung mit Administratorberechtigung starte 
und die Stapelverarbeitungsdatei aufrufe funktioniert so weit alles 
ordnungsgemäß. Hierbei spielt es keine Rolle, ob ich die 
Stapelverarbeitung mit der vollen Pfadangabe aufrufe oder in den 
entsprechenden Ordner wechsle und die Datei ohne Pfadangabe aufrufe. Im 
ersten Fall muss der Pfad natürlich in Anführungszeichen stehen.

Wenn ich eine Eingabeaufforderung unter einem normalen Benutzer starte 
und die Stapelverarbeitung über "runas" mit Admin-Berechtigung starte 
tritt der in meinem Eingangsbeitrag beschriebene Fehler auch auf. 
Hierbei spielt es keine Rolle, ob ich die Stapelverarbeitungsdatei mit 
oder ohne Pfadangabe aufrufe.

wendelsberg schrieb:
> Das steht doch ganz klar in der Fehlermeldung:

Naja, das die Stapelverarbeitungsdatei aufgrund des Leerzeichens nicht 
gefunden wird ist mir durchaus klar. Auf Leerzeichen zu verzichten ist 
jedoch auch nicht "das Gelbe vom Ei".

Mit freundlichen Grüßen
Guido

von Vlad T. (vlad_tepesch)


Lesenswert?

wendelsberg schrieb:
> Auch heute noch gilt: Leerzeichen, Sonderzeichen und Umlaute haben in
> Datei- und Verzeichnisnamen nicht vorzukommen.

das sollte kein Problem sein, solange man solche argumente in 
Anführungszeichen angibt. Bei "Run as admin" scheint das nicht zu 
passieren.

von Timmo H. (masterfx)


Lesenswert?

Interessanterweise wirken bei Pfaden mit "&" scheinbar nicht das durch 
googeln angedachte
1
cd /d "%~dp0"
Also mein Tipp: keine Sonderzeichen im Pfad des Batch-Files. Leerzeichen 
sind nicht das Problem

: Bearbeitet durch User
von Vlad T. (vlad_tepesch)


Lesenswert?

Timmo H. schrieb:
> Interessanterweise wirken bei Pfaden mit "&" scheinbar nicht das
> durch
> googeln angedachtecd /d "%~dp0"
> Also mein Tipp: keine Sonderzeichen im Pfad des Batch-Files. Leerzeichen
> sind nicht das Problem

tatsache - ohne & gehts.

eine Sache kommt mir komisch vor:

in der registry unter batfile steht bei
shell/open/command    "%1" %*

unter shell/runas/command steht   %SystemRoot%\System32\cmd.exe /C "%1" 
%*


bei exefile ist es beides gleich. Der runas befehl kann scheinbar keine 
Dateitypzuordnungen auflösen und so wird der umweg über die cmd gemacht.
die allerdings interpretiert das '&' als Verkettung mehrerer Befehle.

Auszug aus der cmd-Hilfe:
1
Wird /C oder /K angegeben, wird der Rest der Befehlszeile nach der Option als
2
Befehlszeile verarbeitet, wobei folgende Logik zur Verarbeitung des doppelten
3
Anführungszeichens (") gilt:
4
5
    1.  Sind alle folgenden Bedingungen erfüllt, wird ein doppeltes
6
        Anführungszeichen auf der Befehlszeile beibehalten:
7
8
        - keine Option "/S"
9
        - genau zwei doppelte Anführungszeichen
10
        - keines der folgenden Zeichen zwischen den doppelten
11
          Anführungszeichen: &<>()@^|
12
        - es ist mindestens ein Leerzeichen zwischen den doppelten
13
          Anführungszeichen
14
        - die Zeichenfolge zwischen den doppelten Anführungszeichen ist der
15
          Name einer ausführbaren Datei
16
17
    2.  Ist dies nicht der Fall, wird bei einem doppelten Anführungszeichen
18
        als erstem Zeichen sowohl dieses, als auch das letzte doppelte
19
        Anführungszeichen entfernt (und der Rest der Befehlszeile bei-
20
        behalten).

: Bearbeitet durch User
von Guido C. (guidoanalog)


Lesenswert?

Hallo,

vielen Dank für Eure Unterstützung.

Timmo H. schrieb:
> Also mein Tipp: keine Sonderzeichen im Pfad des Batch-Files. Leerzeichen
> sind nicht das Problem

Stimmt, das "&"-Zeichen ist schuld an der Misere. Zumindest darf ich/man 
die Leerzeichen benutzen. Mein Ordner heißt ab sofort "Infos und Dokus".

Mit freundlichen Grüßen
Guido

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.