수색…


소개

JScript 는 실제로 Javascript (1.8.1 버전이므로 일부 새로운 기능을 사용할 수 없음)의 상위 집합이며 batch 스크립트의 기능을 확장하기위한 batch 스크립트에 포함될 수 있습니다. 일반적으로 포함 기법은 배치와 JScript 코드를 구분하기 위해 JScript 지시문 (공식 Javascript 표준의 일부가 아님)을 사용합니다. JScript를 사용하면 표준 Javascript 외에도 WMI 객체뿐만 아니라 Com / ActiveX 객체로 작업 할 수 있습니다.

배치 파일에 포함 된 JScript

다음 예제는 사용자 Michael Dillon 이이 대답 에서 작성한 입니다.


다음 스크립트를 고려하십시오.

@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/

//JScript aka Javascript here

이 스크립트 스 니펫은 다음을 수행합니다.

  • 제공된 모든 인수를 사용하여 자체를 호출하는 cscript 명령을 실행합니다.

  • @set @junk=1 이후의 부분이 주석 처리되어 있으므로 ( /**/ 유효한 JScript 주석입니다),

  • JScript는이를 무시합니다.

  • 참고 : 배치 파일이 /* 를 명령으로 인식하지 못하기 때문에 @set @junk=1 부분이 필요하지만 set 문은 해결 방법이됩니다. JScript는 /* 를 주석으로 인식하므로 다른 batch 파일은 JScript 엔진에서 실행되지 않습니다.


*/ 뒤에 JScript를 추가하고 배치 파일 스크립팅을 확장 할 수 있습니다!

임시 파일로 JScript 실행

여기서 언급했듯이 다른 스크립트를 실행하는 구식 방법은 임시 파일을 사용하는 것입니다. Simple을 파일에 echo 한 다음 실행 (선택적으로 제거)합니다.


다음은 기본 개념입니다.

@echo off
echo //A JS Comment > TempJS.js
echo //Add your code>>TempJS.js

cscript //nologo //e:cscript.exe TempJS.js

del /f /s /q TempJS.js

그러나 이것은 비교적 큰 JScript를 생성하기 위해 많은 echo 문을 필요로합니다. Aacini의 더 좋은 방법이 있습니다.

@echo off
setlocal

rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"

rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > TempJS.js

cscript //nologo //e:cscript.txt TempJS.js
del /f /s /q TempJS.js

goto :EOF

<resource>
JScript
JScript
JScript


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow