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.
- Computadora\HKEY_CLASSES_ROOT.vbs
- (Predeterminado) REG_SZ VBSFile
- 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.