내 파일이 CMD에 있는 경로로 이동하여 실행하는 데 사용했던 ping 서버에 대한 스크립트를 얻었고 다음 줄을 입력합니다.
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
구문을 사용하는 경우:
Filename ip logname.log
그러면 작업이 레지스트리에서 파생됩니다.
내 컴퓨터에는 다음이 있습니다.
- 컴퓨터\HKEY_CLASSES_ROOT.vbs
- (기본값) REG_SZ VBS파일
- 컴퓨터\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) 예약된 작업에서 스크립트를 호출하는 경우 일반적으로 전자가 선호됩니다.