Recherche…


Introduction

JScript est en fait le surensemble de Javascript (sa version 1.8.1 - de sorte que certaines nouvelles fonctionnalités ne sont pas disponibles), et ils peuvent être intégrés dans un batch de script pour l' extension batch fonctions de script. Habituellement, les techniques d’intégration utilisent les directives JScript (ne faisant pas partie du standard officiel Javascript) afin de séparer le code batch et le code JScript. JScript vous permet de travailler avec des objets Com / ActiveX, ainsi qu'avec des objets WMI en plus du Javascript standard.

JScript intégré dans un fichier batch

Cet exemple suivant est créé par l'utilisateur Michael Dillon à partir de cette réponse .


Considérons le script suivant:

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

//JScript aka Javascript here

Cet extrait de script fait:

  • Exécutez la commande cscript qui s'appelle avec tous les arguments fournis.

  • Comme la partie après @set @junk=1 est commenté ( /* et */ sont des commentaires JScript valides),

  • JScript les ignorera.

  • Remarque: Nous avons besoin de la partie @set @junk=1 car le fichier de commandes ne reconnaît pas /* comme une commande, mais une instruction set sera une solution de contournement. JScript reconnaîtra /* comme un commentaire, donc l'autre fichier de batch ne sera pas exécuté par le moteur JScript.


Vous pouvez ajouter votre JScript après */ et commencer à étendre votre script de fichier batch!

Exécuter JScript avec des fichiers temporaires

Comme mentionné ici , la méthode ancienne pour exécuter un autre script consiste à utiliser des fichiers temporaires. Simple echo dans un fichier, puis exécutez-le (et supprimez-le éventuellement).


Voici le concept de base:

@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

Mais cela nécessiterait beaucoup d'instructions echo pour créer un JScript relativement grand. Voici une meilleure méthode par 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow