蝙蝠必须
>>%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"
商店
这是一个包含“引号字符的字符串文字