将执行的JScript中的值传递给批处理文件

时间:2015-05-22 17:46:48

标签: batch-file jscript

我尝试过很多不同的关键字,例如EchoreturnprintWScript.echo()等等。我无法找到从{返回值的方法{1}}文件到js文件。

我的bat文件的简化版本是对bat文件的简单调用,并根据返回的js

进行打印
ERRORLEVEL

我的"myfile.js" IF ERRORLEVEL 1 GOTO Warnings IF ERRORLEVEL 0 GOTO Success :Warnings ECHO Warning GOTO End :Success ECHO Success 文件执行我需要它执行的操作,并将错误计数存储在var中:

JScript

我的目标是返回一个状态,告诉我是否有错误,所以基本上,我想要做的就是:

.
.
.    
var errorCount = tci.GetLastResultDescription().ErrorCount);

然而,当然,如果这不容易。有没有办法将值传递回if (errorCount>0) return 1; else return 0; 文件?

1 个答案:

答案 0 :(得分:1)

不确定。你可以用

WSH.Quit(tci.GetLastResultDescription().ErrorCount);

...这将使cscript以errorcount的错误级别退出。如果您更喜欢布尔退出状态,那么

WSH.Quit(tci.GetLastResultDescritpion().ErrorCount ? 1 : 0);

您也可以使用WSH.Echo将其作为字符串传递,但这需要在cscript循环内执行for /f来捕获输出。如果我是你,我会使用WSH.Quit(n)

对于它的价值,批处理+ JScript在混合格式中工作得非常好。您可以将myfile.js和myfile.bat组合成一个hybrid.bat脚本。

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

@echo off
setlocal

cscript /nologo /e:JScript "%~f0" && (
    >&2 echo exit status was 0
) || (
    >&2 echo exit status was non-zero
)

goto :EOF

@end // end batch / begin JScript chimera

WSH.Quit(Math.round(Math.random()));

有关更多示例,请参阅David Ruhmann's demo Gist