您可以将文本长度限制为参数吗?如果是,是什么限制?

时间:2015-05-25 11:28:58

标签: command-line vbscript command-line-arguments

我有一个VBScript,它接受来自命令行的5个参数作为参数。 5个参数中的两个包含一些.txt文件的完整绝对路径,因此命令行参数长度可能会很长,并且在这种情况下我的自动化脚本可能会失败。

有人可以告诉我,如果我们对VBScript的命令行传递的文本长度有任何限制吗? 实际上,我想知道,如果从VB脚本的角度来看有限制吗?

我按如下方式运行脚本:

cscript.exe Sample.vbs "C:\Program Files\z.txt" param2 param3 D:\abcd.txt param5

1 个答案:

答案 0 :(得分:2)

我发现了这个:http://blogs.msdn.com/b/oldnewthing/archive/2003/12/10/56028.aspx

但你最好的选择是自己测试一下。尝试用一个疯狂的长字符串调用它,然后在你的vb脚本中输出字符串,或输出字符串的长度。我不认为你的文件路径长度会有问题。

<强> a.vbs

Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")

Dim arguments
For i = 1 To 6540
  arguments = arguments & LPad(i,4,"0") & ","
Next

objShell.Run "b.vbs " & arguments

' Using Set is mandatory
Set objShell = Nothing


Function LPad(s, l, c)
  Dim n : n = 0
  If l > Len(s) Then n = l - Len(s)
  LPad = String(n, c) & s
End Function

<强> b.vbs

WriteString "C:\temp\vbscripttest\c.txt",WScript.Arguments.Item(0) 

Function WriteString( filename, contents )
    Set objFileToWrite = CreateObject("Scripting.FileSystemObject").OpenTextFile( filename,2,true)
    objFileToWrite.WriteLine(contents)
    objFileToWrite.Close
    Set objFileToWrite = Nothing
End Function

最大值为6540 * 5个字符= 32700.如果需要,可以更多地使用它。如果我把6541,我得到了:

Windows脚本宿主

脚本:C:\ temp \ vbscripttest \ a.vbs 行:9 Char:1 错误:文件名或扩展名太长。 代码:800700CE 资料来源:( null)

确定