条件编译已关闭

时间:2014-02-11 04:37:48

标签: batch-file jscript conditional-compilation

所以,我现在对这个很新,但是接下来我似乎无法解决这个问题。 批量编写一段代码以启动程序,并模拟单个按键。这是有问题的代码块

@echo off

set SendKeys=CScript //nologo //E:JScript "%~F0"
ping -n 5 -w 1 127.0.0.1 
start .\cc6.exe 
%SendKeys% "{ENTER}"

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

代码返回“条件编译已关闭”错误。 搜索解决方案告诉我添加

/*@cc_on @*/

代码应该解决引用并打开条件编译。 但是在结果中添加该段“'/ * @ cc_on'未被识别为内部或外部命令,可操作程序或批处理文件。”错误。

3 个答案:

答案 0 :(得分:3)

您需要通过@if命令以这种方式使用条件编译:

@if (@CodeSection == @Batch) @then

@echo off

set SendKeys=CScript //nologo //E:JScript "%~F0"
ping -n 5 -w 1 127.0.0.1 
start .\cc6.exe 
%SendKeys% "{ENTER}"

goto :EOF

@end

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

@if命令忽略以下代码,直到下一个@end; (@CodeSection == @Batch)部分只是一个在JScript中具有错误值但在Batch中有效的表达式,@then部分可能是任何只完成批处理部分语法的单词。您还必须在JScript部分之前包含goto :EOF命令,否则它将作为批处理代码执行。

答案 1 :(得分:0)

我认为/ * @ cc_on @ * /需要插入到jscript脚本文件中,而不是插入到您发布的批处理文件中。

答案 2 :(得分:0)

大多数编程语言都使用if来表示条件或条件表达式和语句。
要为JScript打开条件编译,您还需要一个if语句。 按照惯例,您需要通过注释将批处理代码与JScript分开。

JScript于1996年推出,仅受IE 3.0的客户端脚本支持,其语法类似于Javascript,即“ Microsoft的ECMAScript方言”。

@cc_on在IE 10和更早版本的脚本注释中激活条件编译,这意味着注释中的代码将被视为代码并执行,而不被视为注释。当然,它只会由知道它的浏览器/应用程序执行,否则它将被忽略或视为注释。 (就像“我不知道”那样,大多数罪犯都为违反法律而做出了借口,或者看到的人的行为超出了已知感官所能观察到的范围)

IE 11+和Windows应用商店应用程序不支持条件编译。

您正在运行的代码在批处理文件中,而不是在Internal Explorer中执行客户端脚本,因此您的代码中不需要@cc_on

在批处理文件中尝试以下格式:

@if (@a==@a) @end /*
        cscript //E:JScript //nologo "%~f0" %*

    REM --- Insert other batch codes here ---

        exit /b 
*/

// --- JScript codes below this line ----

// --- insert more scripts ---
WScript.Echo(" Code activated, blah!");
WScript.Quit(0);