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

OP #4198252
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
Angehängte Dateien:
Gast #4198262
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
OP #4198304
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
#4198428
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren