wsh下jscript中如何将字符串转换为变体?

How to convert a string to a variant in jscript under wsh?

我需要将一串文本附加到二进制文件的末尾。
这就是我正在尝试的:

inStream = WScript.CreateObject("ADODB.Stream") ;
inStream.type = 1 ;
inStream.open() ;
inStream.LoadFromFile('test.bin') ;

outStream = WScript.CreateObject("ADODB.Stream") ;
outStream.type = 1 ;
outStream.open() ;
outStream.write( inStream.read() ) ;
outStream.write( "\nCONTENT AT THE END" ) ; // this gives an error

outStream.SaveToFile('test2.bin',2) ;

报告的错误是"wrong argument"。
该方法的 documentation 表示参数必须是 variant.

类型

如何将字符串转换为变体?

解决方案是使用辅助ADODB.Stream实例.copyTo()方法。

var inStream = WScript.CreateObject('ADODB.Stream'); // source stream
inStream.Type = 1; // adTypeBinary
inStream.Open();
inStream.LoadFromFile('C:\Test\src.bin');

var outStream = WScript.CreateObject('ADODB.Stream'); // target stream
outStream.Type = 1; // adTypeBinary
outStream.Open();
outStream.Write(inStream.read());
inStream.Close();

var bufStream = WScript.CreateObject('ADODB.Stream'); // auxiliary stream
bufStream.Type = 2; // adTypeText
bufStream.Open();
bufStream.WriteText('\nCONTENT AT THE END'); // strings held as Unicode in memory
bufStream.Position = 2; // skip BOM bytes FF FE
bufStream.CopyTo(outStream); // append to the end of target stream
bufStream.Close();

outStream.SaveToFile('C:\Test\dst.bin', 2);
outStream.Close();