【问题标题】:Conditional Compilation turned off条件编译关闭
【发布时间】:2014-02-11 04:37:48
【问题描述】:

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

@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'不被识别为内部或外部命令、可运行程序或批处理文件。”错误。

【问题讨论】:

    标签: batch-file jscript conditional-compilation


    【解决方案1】:

    你需要通过@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 部分可以是任何仅完成 Batch 部分语法的单词。您还必须在 JScript 部分之前包含 goto :EOF 命令,否则它将作为批处理代码执行。

    【讨论】:

      【解决方案2】:

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

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

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

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

      您正在运行的代码位于批处理文件中,而不是在内部资源管理器中执行客户端脚本,因此您的代码中不需要@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);
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-25
          • 1970-01-01
          • 1970-01-01
          • 2013-04-03
          • 1970-01-01
          • 2013-04-12
          • 1970-01-01
          相关资源
          最近更新 更多