あるvbsファイルが別のvbsファイルの正当性を、実行せずに検証する方法を知っていますか?
「正しさを確認する」とは、この2番目のファイルをエラーなしでコンパイルできることを意味します。
あるvbsファイルが別のvbsファイルの正当性を、実行せずに検証する方法を知っていますか?
「正しさを確認する」とは、この2番目のファイルをエラーなしでコンパイルできることを意味します。
アップデート:
インターサムが指摘したように、私はWScript.Quit
それを実行する(グローバルな)スクリプトを終了することに気づいていませんでした。したがって、シェルの使用は避けられません。
概念実証スクリプト:
Option Explicit
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim goWS : Set goWS = CreateObject("WScript.Shell")
Dim aFiles : aFiles = Array("good.vbs", "bad.vbs")
Dim sFile
For Each sFile In aFiles
WScript.Echo sFile, "==>", checkSyntax(sFile)
Next
Function checkSyntax(sFile)
Dim sCode : sCode = goFS.OpenTextFile(sFile).ReadAll()
WScript.StdOut.Write " A " & sCode
sCode = "Option Explicit : WScript.Quit 0 : " & sCode
goFS.CreateTextFile("sctmp.vbs", True).WriteLine sCode
WScript.StdOut.Write " B " & goFS.OpenTextFile("sctmp.vbs").ReadAll()
Dim oExec : Set oExec = goWS.Exec("cscript sctmp.vbs")
Dim sOtp : sOtp = oExec.Stderr.ReadAll()
If "" = sOtp Then
checkSyntax = "ok"
Else
checkSyntax = sOtp
End If
End Function
出力:
cscript sc.vbs
A WScript.Echo "good"
B Option Explicit : WScript.Quit 0 : WScript.Echo "good"
good.vbs ==> ok
A WScript.Echo "bad" : SomeSub(1, 2, 3)
B Option Explicit : WScript.Quit 0 : WScript.Echo "bad" : SomeSub(1, 2, 3)
bad.vbs ==> M:\lib\kurs0705\xpl\sctmp.vbs(1, 73) Microsoft VBScript compilation error: Cannot use parentheses
when calling a Sub
アップデートII:
からわかるように:
type bad.vbs
WScript.Echo "bad" : SomeSub 1, 2, 3
cscript bad.vbs
bad
M:\lib\kurs0705\xpl\bad.vbs(1, 22) Microsoft VBScript runtime error: Type mismatch: 'SomeSub'
ほとんどのスクリプトが実行された後、ランタイムエラーが発生する可能性があります(「bad」の出力)。このようなエラーに対処するには、
これらの要件はいずれも、VBScriptでは「簡単」ではありません。