未终止的字符串常量mshta:javascript

未终止的字符串常量mshta:javascript,javascript,hta,Javascript,Hta,最近,我试图使用mshta从javascript获取一个快速警报框,但我注意到了一些奇怪的事情,我不知道问题出在哪里。在某种程度上,这就是我想要实现的目标: mshta javascript:alert("The file was stored here:\"C:\\folder_with_space_ _.txt"); 它给出的错误是这篇文章标题中的错误(char 57)。我尝试了多种方法: //code that works: mshta javascript:alert("The fil

最近,我试图使用mshta从javascript获取一个快速警报框,但我注意到了一些奇怪的事情,我不知道问题出在哪里。在某种程度上,这就是我想要实现的目标:

mshta javascript:alert("The file was stored here:\"C:\\folder_with_space_ _.txt");
它给出的错误是这篇文章标题中的错误(char 57)。我尝试了多种方法:

//code that works:
mshta javascript:alert("The file was stored here:\"sdadasd");
mshta javascript:alert("The file was stored here:\"\" sdadasd");

//error-notice the space;error on char 35
mshta javascript:alert("The file was stored here:\" sdasds");
当双引号的数量为奇数时,它似乎给出了错误,但是:

//error
mshta javascript:alert("The file was stored here:\" \"sdadasd");
我试着在浏览器控制台上做同样的事情,结果成功了。我认为这是一种解析器错误。如何修复它?(我正在考虑使用fromCharCode直接插入双引号)


注意:这些命令是从cmd运行的。

我将从我开始使用的命令版本开始,并解释其工作原理:

mshta "javascript:alert('The file was stored here:\x22C:\\folder_with_space_ _.txt');"
第一点,也可能是最重要的一点是,我们正在将一个参数传递给mshta.exe(要执行的JavaScript命令),因此我们应该将整个参数用双引号括起来。这将防止将空格视为参数分隔符


第二点是,似乎没有办法在实际的JavaScript命令中使用双引号。根据这个问题,cmd的双引号中没有转义双引号的标准。显然,mshta.exe不尊重
\”
(或者至少,我无法让它们工作)。我建议遵循Teemu在注释中的建议,并在JavaScript代码中仅对字符串分隔符使用单引号。如果在字符串中希望包含双引号字符,请使用十六进制文字
\x22

命令行中的反斜杠不是JS中的转义字符。请在字符串中使用单引号。