Pet*_*ter 78 parameters vbscript arguments wsh execution
我将此脚本保存在"test.vbs"中:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,我想传递"workFolder"变量的值.
我怎样才能做到这一点?我可以做吗?像"cscript test.vbs workFolder:'C:\ temp \'"之类的东西?
额外问题:是否需要使用"Set workFolder = Nothing"清理传递的变量,或者VBSCript在终止时自动执行此操作?也许"Set File = Nothing"和"Set FSO = Nothing"也是不必要的?如果您知道这两个问题的答案,请告诉我.
Dir*_*mar 130
您可以使用它WScript.Arguments
来访问传递给脚本的参数.
调用脚本:
cscript.exe test.vbs "C:\temp\"
Run Code Online (Sandbox Code Playgroud)
在你的脚本里面:
Set File = FSO.OpenTextFile(WScript.Arguments(0) &"\test.txt", 2, True)
Run Code Online (Sandbox Code Playgroud)
不要忘记检查是否确实有一个参数传递给您的脚本.你可以通过检查Count
财产来做到这一点:
if WScript.Arguments.Count = 0 then
WScript.Echo "Missing parameters"
end if
Run Code Online (Sandbox Code Playgroud)
如果在关闭文件后脚本结束,则无需将变量设置为Nothing
.当cscript.exe进程终止时,将自动清理资源.Nothing
通常只有在执行脚本期间明确要释放资源时才需要设置变量.在这种情况下,您将设置包含对COM对象的引用的变量Nothing
,这将在脚本终止之前释放COM对象.这只是您的奖金问题的简短答案,您将在这些相关问题中找到更多信息:
Ole*_*leg 18
在VBS内部,您可以访问参数
Wscript.Arguments(0)
Wscript.Arguments(1)
Run Code Online (Sandbox Code Playgroud)
等等.参数个数:
Wscript.Arguments.Count
Run Code Online (Sandbox Code Playgroud)
通过命令行传递的每个参数都可以通过以下方式访问:Wscript.Arguments.Item(0)其中零是参数号:ie,0,1,2,3等.
所以在你的代码中你可以:
strFolder = Wscript.Arguments.Item(0)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(strFolder, 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = Nothing
Run Code Online (Sandbox Code Playgroud)
使用wscript.arguments.count,如果有人没有输入正确的值,你可以使用错误陷阱等.
小智 5
您还可以使用可选的命名参数,并且可以按任何顺序给出。
Set namedArguments = WScript.Arguments.Named
Run Code Online (Sandbox Code Playgroud)
这是一个小辅助函数:
Function GetNamedArgument(ByVal argumentName, ByVal defaultValue)
If WScript.Arguments.Named.Exists(argumentName) Then
GetNamedArgument = WScript.Arguments.Named.Item(argumentName)
Else
GetNamedArgument = defaultValue
End If
End Function
Run Code Online (Sandbox Code Playgroud)
示例 VBS:
'[test.vbs]
testArg = GetNamedArgument("testArg", "-unknown-")
wscript.Echo now &": "& testArg
Run Code Online (Sandbox Code Playgroud)
用法示例:
test.vbs /testArg:123
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
251069 次 |
最近记录: |