Eu recebi um script para executar ping nos servidores que usei para executar indo até o caminho onde meu arquivo está localizado no CMD e digite a seguinte linha
FileName ip logname.log
este é o script que eu executo
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
no entanto, ele não funciona mais sempre que eu o executo, agora ele abre o arquivo em vez de executá-lo. alguma idéia sobre como corrigir esse problema?
Responder1
Se você usar a sintaxe:
Filename ip logname.log
então a ação será derivada do registro.
No meu computador, tenho o seguinte.
- Computador\HKEY_CLASSES_ROOT.vbs
- (Padrão) REG_SZ Arquivo VBS
- Computador\HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command
- (Padrão) REG_EXPAND_SZ "%SystemRoot%\System32\WScript.exe" "%1" %*
Se você não quiser deixar isso ao acaso, você terá que incluir explicitamente WScript ou CScript em sua linha de comando, por exemplo
CScript Filename ip logname.log
A diferença mais notável entre CScript e WScript é o comportamento do WScript.Echo
. Com o CScript, o texto é repetido no stdout e não bloqueia. Com WScript, o texto é exibido em uma caixa de diálogo modal e bloqueado. O primeiro geralmente é preferido se (1) você estiver invocando o script a partir de um prompt de comando, (2) estiver invocando o script a partir de uma tarefa agendada.