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

时间:2015-03-01 07:33:49

标签: type-conversion jscript wsh windows-scripting

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

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) ;

报告的错误是“错误的论点” 该方法的documentation表示参数必须是variant类型。

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

1 个答案:

答案 0 :(得分:0)

解决方案是使用辅助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();