2015-05-22 2 views
1

Я пробовал много различных ключевых слов, таких Echo, return, print, WScript.echo() и т.д .. и не могу найти способ, чтобы вернуть значение из js файла в bat файл.Pass значение из исполняемого JScript в Batch File

упрощенная версия моего bat файла будет простой вызов к js файл и печатает на основе возвращенного ERRORLEVEL

"myfile.js" 

IF ERRORLEVEL 1 GOTO Warnings 
IF ERRORLEVEL 0 GOTO Success 
:Warnings 
ECHO Warning 
GOTO End 

:Success 
ECHO Success 

Мой JScript файл делает то, что мне нужно делать, и хранит количество ошибок в вар:

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

Моя цель состоит в том, чтобы вернуть статус говорит мне, если есть ошибка, так что по сути, все, что я хочу сделать что-то вдоль линий:

if (errorCount>0) 
    return 1; 
else 
    return 0; 

Однако, естественно, If не работает это легко. Есть ли способ передать значение обратно в файл bat?

ответ

1

Несомненно. Вы можете использовать

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

... который сделает cscript выход с ERRORLEVEL из 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.

+0

Красивая! 'WSH' - это то, что я должен был прочитать! Кроме того, я взгляну на их объединение в гибридный формат, так как это уменьшит количество необходимых файлов! Огромное спасибо! – starvator

+2

'WSH' является сокращенным псевдонимом для' WScript'. 'WScript' - это имя глобального контекста. Где JavaScript использует объект 'window' или' document' для большинства своих методов, JScript использует объект 'WScript'. 'WSH.Quit (n)', 'WSH.Echo (str)', 'WSH.StdErr.WriteLine (str)' и т. Д. – rojo

 Смежные вопросы

  • Нет связанных вопросов^_^