将值从已执行的 JScript 传递到批处理文件
Pass value from executed JScript to Batch File
我尝试了很多不同的关键字,例如 Echo
、return
、print
、WScript.echo()
等,但无法找到 return 从 js
文件到 bat
文件的值。
我的 bat
文件的简化版本是对 js
文件的简单调用,并根据 returned ERRORLEVEL
打印
"myfile.js"
IF ERRORLEVEL 1 GOTO Warnings
IF ERRORLEVEL 0 GOTO Success
:Warnings
ECHO Warning
GOTO End
:Success
ECHO Success
我的 JScript
文件执行我需要它执行的操作,并将错误计数存储在 var:
.
.
.
var errorCount = tci.GetLastResultDescription().ErrorCount);
我的 objective 是 return 一个状态,告诉我是否有错误,所以基本上,我想做的就是:
if (errorCount>0)
return 1;
else
return 0;
然而,自然地,If 并不那么容易工作。有没有办法将值传回 bat
文件?
当然可以。你可以使用
WSH.Quit(tci.GetLastResultDescription().ErrorCount);
... 这将使 cscript
以错误计数的错误级别退出。如果您更喜欢布尔退出状态,那么
WSH.Quit(tci.GetLastResultDescritpion().ErrorCount ? 1 : 0);
您也可以使用 WSH.Echo
将其作为字符串传递,但这需要在 for /f
循环中执行 cscript
以捕获输出。如果我是你,我会使用 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。
我尝试了很多不同的关键字,例如 Echo
、return
、print
、WScript.echo()
等,但无法找到 return 从 js
文件到 bat
文件的值。
我的 bat
文件的简化版本是对 js
文件的简单调用,并根据 returned ERRORLEVEL
"myfile.js"
IF ERRORLEVEL 1 GOTO Warnings
IF ERRORLEVEL 0 GOTO Success
:Warnings
ECHO Warning
GOTO End
:Success
ECHO Success
我的 JScript
文件执行我需要它执行的操作,并将错误计数存储在 var:
.
.
.
var errorCount = tci.GetLastResultDescription().ErrorCount);
我的 objective 是 return 一个状态,告诉我是否有错误,所以基本上,我想做的就是:
if (errorCount>0)
return 1;
else
return 0;
然而,自然地,If 并不那么容易工作。有没有办法将值传回 bat
文件?
当然可以。你可以使用
WSH.Quit(tci.GetLastResultDescription().ErrorCount);
... 这将使 cscript
以错误计数的错误级别退出。如果您更喜欢布尔退出状态,那么
WSH.Quit(tci.GetLastResultDescritpion().ErrorCount ? 1 : 0);
您也可以使用 WSH.Echo
将其作为字符串传递,但这需要在 for /f
循环中执行 cscript
以捕获输出。如果我是你,我会使用 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。