Szukaj…


Wprowadzenie

JScript jest tak naprawdę nadzbiorem Javascript (jest to wersja 1.8.1 - więc niektóre nowsze funkcje nie są dostępne) i można je osadzić w skrypcie batch celu rozszerzenia funkcji skryptu batch . Zazwyczaj techniki osadzania wykorzystują dyrektywy JScript (nie będące częścią oficjalnego standardu Javascript) w celu oddzielenia kodu wsadowego i kodu JScript. JScript umożliwia pracę z obiektami Com / ActiveX, a także z obiektami WMI oprócz standardowego Javascript.

Osadzony JScript w pliku wsadowym

Poniższy przykład został stworzony przez użytkownika Michaela Dillona z tej odpowiedzi .


Rozważ następujący skrypt:

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

//JScript aka Javascript here

Ten fragment skryptu:

  • Wykonaj polecenie cscript które wywołuje się ze wszystkimi podanymi argumentami.

  • Ponieważ część po @set @junk=1 jest komentowana ( /* i */ są poprawnymi komentarzami JScript),

  • JScript je zignoruje.

  • Uwaga: Potrzebujemy części @set @junk=1 ponieważ plik wsadowy nie rozpoznaje /* jako polecenia, ale instrukcja set będzie obejściem problemu. JScript rozpozna /* jako komentarz, więc drugi plik batch nie zostanie wykonany przez silnik JScript.


Możesz dodać JScript po */ i rozpocząć rozszerzanie skryptów plików wsadowych!

Uruchom JScript z plikami tymczasowymi

Jak wspomniano tutaj , oldskulową metodą uruchomienia innego skryptu jest użycie plików tymczasowych. Po prostu echo w pliku, a następnie uruchom go (i opcjonalnie usuń).


Oto podstawowa koncepcja:

@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

Ale to wymagałoby wielu instrukcji echo , aby stworzyć stosunkowo duży JScript. Oto lepsza metoda 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow