batch-file
Hybrides Batch et JSCript
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 instructionset
sera une solution de contournement. JScript reconnaîtra/*
comme un commentaire, donc l'autre fichier debatch
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