batch-file
배치 및 JSCript 하이브리드
수색…
소개
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