vbs - 800A0401 - 预期语句结束

vbs - 800A0401 - 预期语句结束

蝙蝠必须 >>%vbs% echo oShellLink.IconLocation = "%1, 0"产生

oShellLink.IconLocation = ""C:\WINDOWS\NOTEPAD.exe", 0"`

其中 %1 是引用的路径

但是,除非我从路径中删除引号,如下所示:

oShellLink.IconLocation = “C:\WINDOWS\NOTEPAD.exe,0”

我遇到了标题错误。您有什么建议?(请注意,%1 始终带有引号)

另外,我对 vbscript 不是很熟悉,为什么它不需要彼此相邻的引号?

...

仍然不清楚为什么 vbscript 不能解释这个分配,但找到了一个解决方法:%~1 - 扩展 %1 并删除任何周围的引号(“”)。

答案1

在 VBS 中,您需要使用第二个双引号字符来转义双引号字符。

因此改变

>>%vbs% echo oShellLink.IconLocation = "%1, 0"

>>%vbs% echo oShellLink.IconLocation = ""%1", 0"

VBS 文件中的哪个文件会给你

oShellLink.IconLocation = """C:\WINDOWS\NOTEPAD.exe"", 0"

"C:\WINDOWS\NOTEPAD.exe", 0在分配给 .IconLocation 之前进行解析。

编辑(附加信息):

基本上,如果在(非文字)字符串中放置未转义的引号,则会引发错误。

这是因为解析器认为它(引号字符)是字符串的结束标记,在其后留下垃圾(剩余的字符)。

因此,由于结束引号应该是“语句结束”标记,但它在结束引号后找到了字符,因此会出现错误,因为它“预期”那是“语句结束”。

由于 .IconLocation 可以智能地将您输入的参数列表解析为单个字符串,因此该路径无论是否使用转义引号括起来都可以正常工作。

答案2

你的问题是这一行

oShellLink.IconLocation = ""C:\WINDOWS\NOTEPAD.exe", 0"

您有一个“”,它是引号转义字符。这基本上可以让您获得包含引号的字符串而不会出现解析器错误。如下所示:

" this is a string literal that contains a "" quote character"

商店

这是一个包含“引号字符的字符串文字

相关内容