1

Я получил скрипт для проверки связи с серверами, который я использовал для выполнения перехода по пути, где мой файл расположен на 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

однако, он больше не работает всякий раз, когда я выполняю его, теперь он открывает файл вместо того, чтобы выполнить его. какие-либо идеи о том, как решить эту проблему?

1 ответ1

0

Если вы используете синтаксис:

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 текст выводится на стандартный вывод и не блокируется. С WScript текст отображается в модальном диалоговом окне и блокируется. Первый вариант обычно предпочтителен, если (1) вы вызываете скрипт из командной строки, (2) вы вызываете скрипт из запланированной задачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .