无法从cmd运行vbscript

里尔多·戈麦斯(Rildo Gomez)

我有一个脚本来ping服务器,我用来执行该命令,以转到我的文件在CMD上所在的路径,然后键入以下行

FileName ip logname.log

这是我运行的脚本

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

但是,无论何时执行,它都不再起作用,现在它会打开文件而不是执行文件。关于如何解决此问题的任何想法?

泉泉

如果使用语法:

Filename ip logname.log

那么该操作将从注册表中派生。

在我的计算机上,我有以下内容。

  1. 电脑\ HKEY_CLASSES_ROOT.vbs
    • (预设值)REG_SZ VBSFile
  2. 电脑\ HKEY_CLASSES_ROOT \ VBSFile \ Shell \ Open \ Command
    • (默认)REG_EXPAND_SZ“%SystemRoot%\ System32 \ WScript.exe”“%1”%*

如果您不想碰碰运气,则必须在命令行中明确包含WScript或CScript,例如

CScript Filename ip logname.log

CScript和WScript之间最显着的区别是的行为WScript.Echo使用CScript,文本将回显到stdout,并且不会阻塞。使用WScript,文本将显示在模式对话框中并被阻止。如果(1)从命令提示符处调用脚本,(2)从计划任务中调用脚本,则通常首选前者。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章