VBScript kann nicht von cmd aus ausgeführt werden

VBScript kann nicht von cmd aus ausgeführt werden

Ich habe ein Skript zum Pingen von Servern, das ich ausführte, indem ich in CMD zu dem Pfad ging, in dem sich meine Datei befindet, und die folgende Zeile eingab

FileName ip logname.log

Dies ist das Skript, das ich ausführe

hostIp      = wscript.arguments(0)
logfilename = wscript.arguments(1)
Set fso     = CreateObject("Scripting.FileSystemObject")
Set Shell   = CreateObject("Wscript.Shell")
' OpenTextFile Method requires a Const value
' (Over)Write = 2  Append = 8   
Set logfile = fso.OpenTextFile(logfilename, 8, True)
shellstring = "%comspec% /c ping -t -f -l 32 -w 1000 " & hostIP
Set oExec   = Shell.Exec(shellstring)
wscript.echo "Ping Error log With Timestamp - Ctrl + C to halt"
Do While oExec.StdOut.AtEndOfStream <> True
      pingline = Date & " " & Time & " " & oExec.StdOut.ReadLine
'      If InStr(pingline, "TTL=") = 0 Then
         logfile.WriteLine(pingline)
'      End If
Loop

es funktioniert jedoch nicht mehr, wenn ich es jetzt ausführe, öffnet es die Datei, anstatt sie auszuführen. Irgendwelche Ideen, wie sich dieses Problem beheben lässt?

Antwort1

Wenn Sie die Syntax verwenden:

Filename ip logname.log

dann wird die Aktion aus der Registry abgeleitet.

Auf meinem Computer habe ich Folgendes.

  1. Computer\HKEY_CLASSES_ROOT.vbs
    • (Standard) REG_SZ VBS-Datei
  2. Computer\HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command
    • (Standard) REG_EXPAND_SZ "%SystemRoot%\System32\WScript.exe" "%1" %*

Wenn Sie es nicht dem Zufall überlassen wollen, müssen Sie WScript oder CScript explizit in Ihre Kommandozeile einbinden, zB

CScript Filename ip logname.log

Der auffälligste Unterschied zwischen CScript und WScript ist das Verhalten von WScript.Echo. Bei CScript wird der Text nicht blockierend an die Standardausgabe ausgegeben. Bei WScript wird der Text blockierend in einem modalen Dialogfeld angezeigt. Ersteres ist im Allgemeinen vorzuziehen, wenn (1) Sie das Skript von einer Eingabeaufforderung aus aufrufen, (2) Sie das Skript von einer geplanten Aufgabe aus aufrufen.

verwandte Informationen