如何将批处理代码与vbscript代码合并

时间:2014-12-28 10:59:19

标签: javascript batch-file vbscript merge

有时在我的批处理脚本中,我通常将批处理代码与JavaScript代码(.js文件)合并,如下所示:

@if(@X)==(@Y) @end /*          ← Hybrid line. Starts a Javascript comment block.
::Batch code
@echo off
set code=65
cscript //nologo /E:JScript "%~f0" %code%      ← Calls itself using cscript.exe.
pause>nul
exit/b
*/                        ← Ends the comment block, now we can write JavaSCript.
//JavaScript code
WScript.echo(String.fromCharCode(WScript.Arguments.Unnamed(0)));

其输出为A(65 ASCII)。

好的,JavaSCript运行正常。我的问题是:如何使用VBScript执行此操作?我不是VBScript的专家,但我知道在我的代码中没有任何方法可以使用注释块,因此我无法使用与JavaScript相同的技术。

假设我有一个代码执行相同的操作(将第一个参数传递的ASCII代码转换为char),但现在在VBScript中:

WScript.echo chr(WScript.Arguments.Unnamed(0))

如何将此VBScript代码与我的批处理代码合并,就像我使用JavaScript一样?

1 个答案:

答案 0 :(得分:4)

我用过的东西。要保存为.cmd文件

<?xml : version="1.0" encoding="UTF-8" ?> ^<!-- This is the cmd zone ---------

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "code=65"
    cscript //nologo "%~f0?.wsf" //job:mainJob %code%
    exit /b

------------------------------------------------ This is the vbs zone ------->
<package>
  <job id="mainJob">
    <script language="VBScript"><![CDATA[

        If WScript.Arguments.Unnamed.Count > 0 Then 
            WScript.StdOut.WriteLine Chr(WScript.Arguments.Unnamed(0))
        End If

    ]]></script>
  </job>
</package>

在这种情况下使用了两个技巧。第一个是在执行vbscript部分的wsf文件中的xml注释中隐藏cmd部分。第二个技巧是使用cmd文件调用cscript作为使用"%~f0?.wsf"执行的脚本,这将使cscript将文件作为.wsf文件处理,而实际扩展名为{{} 1}}

但是你应该阅读this来详尽分析这个问题。