所以,我在这里对此很陌生,但是这是我似乎无法解决的问题。批量编写一段代码以启动程序,并模拟一次按键。这是有问题的代码块
@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”中添加该段结果不会被识别为内部或外部命令,可操作程序或批处理文件。错误。
您需要通过@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
命令,否则它将作为批处理代码执行。
我相信/ * @ cc_on @ * /需要插入到jscript脚本文件中,而不是您发布的批处理文件中。
大多数编程语言都使用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);