Es schrieb einmal Wolfgang Jäth:
> Am 02.04.2012 22:30, schrieb Alfred Peters:
>> Es schrieb einmal Alfred Peters:
>>> Es schrieb einmal Ulrich F. Heidenreich:
>>
>>>>| execute ("e:\hamster\call5er.bat","",0,False)
>>>>
>>>> wird nicht mehr ausgeführt.
>
> Das wurde es noch *nie*.
Doch, irgendwie scheint es zu tatsächlich zu funktionieren. Zumindest hier
bei mir und offensichtlich auch bei Ulrich.
Das es im .1521 - .1524 nicht mehr geht, hat eine andere Ursache.
> Entgegen landläufiger Ansicht sind Batch-Dateien eben *keine* (direkt
> ausführbaren) Programmdateien, sondern reine Datendateien aka Skripte,
> welche an den Komandozeilenprozessor (früher
command.com, heute cmd.exe)
> als Interpreter (und *eigentliches* Programm) übergeben werden müssen
> (s. u.). Der Betriebssystem-Kern selbst kann mit einer Batch-Datei genau
> so wenig anfangen wie mit einer TXT-Datei; /der/ versteht *nur*
> Maschinensprache aka EXE oder COM.
Richtig. Selbst auf den MS-Seiten[1] wird zur Ausführung von Batch-Dateien
auf cmd.exe verwiesen. Aber: "Und Sie dreht sich doch ..."
>>> Mit wait= True sollte der Aufruf funktionieren.
>>
>> Oder besser gleich:
>>
>>| Shell( "e:\hamster\call5er.bat","",0,"open")
>
> Bist Du Dir sicher, daß das funktioniert?
Ja. Shell() ist eine ganz andere Geschichte. Execute() arbeitet mit
CreateProcess(), während Shell() die Windows-Funktion ShellExecute()
benutzt. Und die wiederum benutzt die Registry-Einstellungen unter:
"HKEY_CLASSES_ROOT\.bat" bzw. "HKEY_CLASSES_ROOT\batfile" und dort dann
die Angaben für "shell\open" oder eben "shell\edit". Das entspricht dann
dem Parameter beim Shell()-Aufruf.
> Ich bekomme damit /überhaupt/
> keine Ausgabe (und wenn, würde ich eigentlich auch fast eher erwarten,
> daß die Datei mit einen Texteditor geöffnet wird).
Die Parameter sind auch noch falsch. In der Hilfe steht:
| Shell( <filename>, <modus>, <path>, <oprtn> )
Es ist aber nicht nur, wie von mir vermutet, <modus> und <path>
vertauscht, es fehlt auch noch ein Parameter. Richtig muss es heißen:
| Shell( <filename>, <parameter>, <modus>, <path>, <oprtn> )
Und Ulrichs Aufruf somit:
# Shell( "e:\hamster\call5er.bat", "", 0, "", "open")
> Funktionieren tut aber auf alle Fälle die klassische Variante
>
>| execute ("cmd.exe /Ce:\hamster\call5er.bat", "", 1, true )
Mit <wait>=True sowieso. Und mit <wait>=False geht auch das aktuell nicht.
Aber das hat, wie gesagt, eine andere Ursache.
> Wolf 'und die haben zudem noch den Vorteil, daß man ggf. sogar Parameter
> angeben kann' gang
Ja, aber das kann Shell auch. Siehe oben.
Alfred
[1]<
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx>
--
12256.1