batch-file
Batch- und JSCript-Hybride
Suche…
Einführung
JScript
ist eigentlich die Obermenge von Javascript
(es ist 1.8.1 Version - so einige neuere Funktionen sind nicht verfügbar), und sie können in eine eingebettet werden batch
für die Erweiterung Skript batch
- Skript - Funktionen. Normalerweise verwenden Techniken zum Einbetten die JScript-Anweisungen (nicht Teil des offiziellen Javascript-Standards), um den Batch- und JScript-Code voneinander zu trennen. Mit JScript können Sie neben dem Standard-Javascript auch mit Com / ActiveX-Objekten sowie mit WMI-Objekten arbeiten.
Eingebettetes JScript in einer Stapeldatei
Das folgende Beispiel wird von Benutzer Michael Dillon anhand dieser Antwort erstellt .
Betrachten Sie das folgende Skript:
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
//JScript aka Javascript here
Dieses Skript-Snippet führt Folgendes aus:
cscript
Befehlcscript
der sich mit allen angegebenen Argumenten aufruft.Da der Teil nach
@set @junk=1
kommentiert wird (/*
und*/
sind gültiger JScript-Kommentar),JScript wird sie ignorieren.
Hinweis: Wir benötigen den
@set @junk=1
Part, da die@set @junk=1
/*
als Befehl erkennt, eineset
Anweisung jedoch eine Problemumgehung ist. JScript erkennt/*
als Kommentar, sodass die anderebatch
nicht von der JScript-Engine ausgeführt wird.
Sie können Ihr JScript nach */
hinzufügen und Ihr Batch-File-Scripting erweitern!
Führen Sie JScript mit temporären Dateien aus
Wie bereits erwähnt hier ist die Old-School - Methode ein anderes Skript ausführen , indem temporäre Dateien. Einfache echo
in eine Datei und führen Sie es (und entfernen Sie sie optional).
Hier ist das Grundkonzept:
@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
Dies erfordert jedoch viele echo
, um ein relativ großes JScript zu erstellen. Hier ist eine bessere Methode von 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