Buscar..


Introducción

JScript es en realidad el superconjunto de Javascript (es la versión 1.8.1, por lo que algunas de las funciones más recientes no están disponibles), y se pueden incrustar en un script por batch para ampliar las funciones de batch scripts por batch . Por lo general, las técnicas de incrustación utilizan las directivas de JScript (que no forman parte del estándar oficial de Javascript) para separar el lote y el código de JScript. JScript le permite trabajar con objetos Com / ActiveX, así como con objetos WMI además del Javascript estándar.

JScript incrustado en un archivo por lotes

Este siguiente ejemplo es creado por el usuario Michael Dillon a partir de esta respuesta .


Considere el siguiente script:

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

//JScript aka Javascript here

Este fragmento de script hace:

  • Ejecute el comando cscript que se llama a sí mismo con todos los argumentos proporcionados.

  • Como la parte después de @set @junk=1 se comenta ( /* y */ son comentarios válidos de JScript),

  • JScript los ignorará.

  • Nota: Necesitamos la parte @set @junk=1 porque el archivo por lotes no reconoce /* como un comando, pero una declaración de set será una solución alternativa. JScript reconocerá /* como un comentario, por lo que el otro archivo por batch no será ejecutado por el motor de JScript.


Puede agregar su JScript después de */ y comenzar a extender sus scripts de archivos por lotes.

Ejecutar JScript con archivos temporales

Como se mencionó aquí , el método de la vieja escuela para ejecutar otro script es mediante el uso de archivos temporales. Simplemente haga echo en un archivo y luego ejecútelo (y elimínelo opcionalmente).


Aquí está el concepto básico:

@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

Pero esto requeriría muchas declaraciones de echo para crear un JScript relativamente grande. Aquí hay un método mejor por 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow