我有一个node.js脚本,该脚本调用VBScript,并将字符串作为参数传递。
master.js:
'use strict';
var str = 'This string contains "double quotes".';
console.log("In JS: " + str);
const
spawn = require( 'child_process' ).spawnSync,
vbs = spawn( 'cscript.exe', [ 'slave.vbs', str ] );
console.log("In VBScript: " + `${vbs.stdout.toString()}` );
slave.vbs:
Option Explicit
If 0 < WScript.Arguments.Count Then
Dim str : str = WScript.Arguments(0)
End If
Wscript.Stderr.WriteLine str
控制台输出:
在JS中:此字符串包含“双引号”。
在VBScript中:此字符串包含\ double
这不好,我需要它们保持一致。经过一些研究,我发现VBScript的转义字符是双引号本身。因此,如果我想要在VBScript中包含双引号的字符串文字,则必须这样声明:
Dim str : str = "This string contains ""double quotes""."
考虑到这一点,我更改了master.js代码:
'use strict';
var str = 'This string contains ""double quotes"".';
console.log("In JS: " + str);
const
spawn = require( 'child_process' ).spawnSync,
vbs = spawn( 'cscript.exe', [ 'slave.vbs', str ] );
console.log("In VBScript: " + `${vbs.stderr.toString()}` );
新控制台输出:
在JS中:此字符串包含“双引号”。
在VBScript中:此字符串包含\\双引号\\。
还是不好。我怎样才能正确地做到这一点?
答案 0 :(得分:1)
您可以编写一个显式的chr()调用:
var str ='This string contains' & chr(34) & 'double quotes' & chr(34) &'.';