サーチ…


前書き

JScriptは実際にはJavascriptのスーパーセットです(1.8.1バージョンなのでいくつかの新しい機能は利用できません)、 batchスクリプトの機能を拡張するためのbatchスクリプトに埋め込むことができます。通常、埋め込みの技法は、バッチとJScriptコードを分離するためにJScript指令(公式のJavascript標準の一部ではない)を使用しています。 JScriptでは、Com / ActiveXオブジェクト、および標準のJavascriptに加えてWMIオブジェクトを扱うことができます。

バッチファイル内の埋め込みJScript

次の例は、ユーザーのMichael Dillonによってこの回答から作成されています。


次のスクリプトを考えてみましょう。

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

//JScript aka Javascript here

このスクリプトスニペットは次の処理を行います。

  • cscriptコマンドを実行し、提供されたすべての引数を使用して自分自身を呼び出します。

  • @set @junk=1後の部分がコメントされている@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