javascript - 将包含双引号的字符串从 node.js 脚本传递到 VBScript
问题描述
我有一个调用 VBScript 的 node.js 脚本,将字符串作为参数传递。
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()}` );
从属.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 中:此字符串包含 \\双引号\\。
还是不行。我怎样才能正确地做到这一点?
解决方案
您可以编写显式 chr() 调用:
var str ='This string contains' & chr(34) & 'double quotes' & chr(34) &'.';
推荐阅读
- jestjs - 无法使用 ES 模块在 Jest 中模拟
- python - Django 3.2 中的分页和切片问题
- java - 在测试中重用生产代码:好主意还是坏主意?(或者我可以在测试和生产中使用相同的代码)?
- html - the_post_thumbnail 中的响应式图像大小
- ubuntu - .net 核心站点在 ubuntu 上重新部署后未更新
- database - 将数百万“虚拟”记录加载到 postgresql 数据库以模拟 PROD 数据库记录计数的最快方法?
- ios - 项目加载时xcode 13.1崩溃
- r - 使用 R 中的 coxme 包加速混合效应 Cox 模型的估计
- list - 查找列表中不重复的项目数
- c# - C# UdpClient 发送中断接收和 WCF