no puedo ejecutar vbscript desde cmd

no puedo ejecutar vbscript desde cmd

Obtuve un script para hacer ping a los servidores que solía ejecutar yendo a la ruta donde se encuentra mi archivo en CMD y escribo la siguiente línea

FileName ip logname.log

este es el script que ejecuto

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

sin embargo, ya no funciona cada vez que lo ejecuto, ahora abre el archivo en lugar de ejecutarlo. ¿Alguna idea sobre cómo solucionar este problema?

Respuesta1

Si usas la sintaxis:

Filename ip logname.log

entonces la acción se derivará del registro.

En mi computadora tengo lo siguiente.

  1. Computadora\HKEY_CLASSES_ROOT.vbs
    • (Predeterminado) REG_SZ VBSFile
  2. Computadora\HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command
    • (Predeterminado) REG_EXPAND_SZ "%SystemRoot%\System32\WScript.exe" "%1" %*

Si no quiere dejarlo al azar, tendrá que incluir explícitamente WScript o CScript en su línea de comando, por ejemplo

CScript Filename ip logname.log

La diferencia más notable entre CScript y WScript es el comportamiento de WScript.Echo. Con CScript, el texto se repite en la salida estándar y no bloquea. Con WScript, el texto se muestra en un cuadro de diálogo modal y se bloquea. Generalmente se prefiere lo primero si (1) invoca el script desde un símbolo del sistema, (2) invoca el script desde una tarea programada.

información relacionada