Batch Datei durch VBS Datei öffnen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Eigentlich macht es keinen Sinn eine Batch aus einem VBS aufzurufen, Das ist als würde man aus einem Porsche austeigen um mit einem Traktor weiter zu fahren.

Naja, es ist schon vermessen von mir, VBS als Porsche zu bezeichnen. (Zumal VBS schon seit fast 15 Jahren auf dem Scrottplatz gammelt.)

VBS kann alles was Batch kann und noch mehr... also warum dann in der Funktionalität abwärts steigen?

Egal....

Set objShell = WScript.CreateObject("WScript.Shell")
  ' .run  "Programm/Script" , Fensterstyle, aufBeendenWarten?
  ' hier  auf Schließen der Batch warten
objShell.Run "demo.cmd",1,true
WScript.Echo  "Hab  gewartet"

  ' hier nicht auf Schließen der Batch warten
objShell.Run "demo.cmd",1,false
WScript.Echo  "Hab nicht gewartet"

Set objShell = Nothing

...oder...

Set objShell = wscript.createobject("wscript.shell")
Set oExec = objShell.Exec("demo.cmd")
Set objShell = Nothing 

...oder...

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "demo.cmd", "", "", "open", 1
WScript.Echo "Hab nicht gewartet"
Set objShell = Nothing

Batch mit Admin aufrufen...

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "demo.cmd", "", "", "runas", 1
WScript.Echo "Hab nicht gewartet"
Set objShell = Nothing

Eigentlich verwendet man VBScript nur noch als Hilfsscripte in einer Batch um dinge zu erledigen, welche Batch nicht kann...

Admin.cmd

@echo off
set "elevator=%temp%\%~n0.elevate.vbs"
net session >nul 2>&1 && goto :adminTasks
  rem sonst erzeuge ein  kleines  VisualBasicScript und  führe  es aus
if not exist "%elevator%" (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~f0","","", "runas", 1 > "%elevator%"
)
cscript /nologo "%elevator%"
exit /b

:adminTasks
 rem Hier kommt alles rein, was  mit erhöhten Rechten ausgeführt wird!
echo Ich habe Adminrechte
pause

VBScript ist schon lange tot und wird nur noch aus Kompatibilität im System gehalten. Batch wird in den nächsten Jahren nach und nach verschwinden, da das neue WindowsTerminal bevorzugt auf Powershell setzt.

Stecke nicht mehr allzuviel Energie in Technologien aus dem vergangenen Jahrhundert. Wozu etwas lernen, was es bald nicht mehr gibt?

Konzentriere Dich auf Powershell für Scripting oder C# für Applicationen.



Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren