Der einfache Versuch, die Shell-Funktion mit einem DOS-Befehl aus dem Befehlssatz des Kommandointerpreters COMMAND.COM (Kommandozeile unter Windows 9.x) bzw. CMD.EXE (Konsole unter Windows NT/2000/XP) zu füttern, wird fehlschlagen - zum Beispiel:
Shell "mkdir c:\abc"
Zum Aufruf der Befehle eines Kommandointerpreters muss nämlich zuerst dieser selbst mit dem Start-Parameter "/c" aufgerufen werden, wobei nachfolgend der Befehl und dessen weitere Parameter angefügt werden. Den tatsächlichen, von der Windows-Version abhängenden Namen des Kommandointerpreters finden Sie in der Umgebungsvariablen "COMSPEC" vor - Sie können die Umgebungsvariable mittels der Environ$-Funktion auslesen.
Der oben beabsichtigte Shell-Aufruf müsste also wie folgt aussehen:
Shell Environ$("COMSPEC") & " /c mkdir c:\abc"
Vereinfacht als Funktion, die den Kommandointerpreter und den Start-Parameter "/c" automatisch voranstellt:
Public Function DOSShell(CommandLine As String, _
Optional ByVal WindowStyle As VbAppWinStyle = vbMinimizedNoFocus) _
As Long
DOSShell = _
Shell(Environ$("COMSPEC") & " /c " & CommandLine, WindowStyle)
End Function
|