【发布时间】:2013-01-16 00:24:25
【问题描述】:
我有两个VBS和JScript的小程序:
VBScript.vbs:
For i=0 To 255
WScript.StdOut.Write Chr(i)
Next
JScript.js:
for ( var i=0; i <= 255; ++i )
WScript.StdOut.Write(String.fromCharCode(i));
当我在命令提示符中执行它们时,它们会显示不同的结果:
C:>cscript /nologo VBScript.vbs
☺☻♥♦♣
♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~⌂??'ƒ".┼╬^%S<O?Z??''""--~Ts>o?zY ¡¢£¤¥¦§¨©ª«¬®
¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ
ÿ
C:>cscript /nologo JScript.js
☺☻♥♦♣
♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~⌂???????????????????????????????? ¡¢£¤¥¦§¨©ª«¬
®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüý
þÿ
可以解释以前的输出,因为 JScript 的 fromCharCode 方法与 VBScript 的 Chr 函数存在一些操作差异。但是,如果尝试将输出重定向到磁盘文件,结果会大不相同:
C:>cscript /nologo VBScript.vbs > VBScript.txt
C:>cscript /nologo JScript.js > JScript.txt
C:\JScript.js(2, 4) Microsoft JScript runtime error: Invalid procedure call or argument
C:>dir *.txt
15/01/2013 05:48 p.m. 128 JScript.txt
15/01/2013 05:48 p.m. 256 VBScript.txt
在这种情况下,两个程序在相同条件下使用相同 WSH方法,所以我不明白为什么VBS正确生成256个字符的文件,但是JScript 发出错误并仅生成前 128 个字符。
这里发生了什么?有没有办法在 JScript 中正确生成具有 256 个不同字符的相同文件? TIA
安东尼奥
【问题讨论】:
-
有趣,然后重定向到文件,两个 vbs/js 打印 128 字节并在此处失败并出现相同的错误。为这个问题 +1。
标签: vbscript jscript wsh windows-scripting