Un archivo por lotes es un archivo de script en DOS , OS/2 y Microsoft Windows . Consiste en una serie de comandos que el intérprete de línea de comandos ejecuta , almacenados en un archivo de texto plano . Un archivo por lotes puede contener cualquier comando que el intérprete acepte de forma interactiva y utilizar construcciones que permiten ramificaciones condicionales y bucles dentro del archivo, como etiquetasIF , FOR, y . El término "lote" proviene de procesamiento por lotes , que significa "ejecución no interactiva", aunque un archivo por lotes podría no procesar un lote de múltiples datos.GOTO
De forma similar al lenguaje de control de trabajos (JCL), DCL y otros sistemas en sistemas mainframe y minicomputadoras, se agregaron archivos por lotes para facilitar el trabajo requerido para ciertas tareas regulares, permitiendo al usuario configurar un script para automatizarlas. Cuando se ejecuta un archivo por lotes, el programa de shell (generalmente COMMAND.COM o cmd.exe ) lee el archivo y ejecuta sus comandos, normalmente línea por línea. [ 1 ] Los sistemas operativos tipo Unix , como Linux , tienen un tipo de archivo similar, pero más flexible, llamado script de shell . [ 2 ]
La extensión de archivo .bat se usa en DOS y Windows. Windows NT y OS/2 también añadieron .cmd . Los archivos por lotes para otros entornos pueden tener extensiones diferentes, por ejemplo, .btm en shells relacionados con 4DOS , 4OS/2 y 4NT .
El manejo detallado de los archivos por lotes ha cambiado significativamente entre versiones. Algunos detalles de este artículo se aplican a todos los archivos por lotes, mientras que otros solo se aplican a ciertas versiones.
Variantes
DOS
En MS-DOS , un archivo por lotes se puede ejecutar desde la línea de comandos escribiendo su nombre, seguido de los parámetros necesarios y pulsando la ↵ Entertecla Intro. Al cargar DOS, el archivo AUTOEXEC.BAT , si está presente, se ejecuta automáticamente, por lo que cualquier comando necesario para configurar el entorno DOS puede incluirse en este archivo. Los usuarios de computadoras pueden configurar el archivo AUTOEXEC.BAT para establecer la fecha y hora del sistema, inicializar el entorno DOS, cargar programas residentes o controladores de dispositivos, o inicializar conexiones y asignaciones de red.
La extensión de archivo .bat identifica un archivo que contiene comandos que son ejecutados línea por línea por el intérprete de comandos COMMAND.COM , como si fuera una lista de comandos ingresados manualmente, con algunos comandos adicionales específicos para archivos por lotes para funcionalidades de programación básicas, incluido un GOTOcomando para cambiar el flujo de ejecución de las líneas.
Ventanas tempranas
Microsoft Windows se introdujo en 1985 como una interfaz gráfica de usuario (GUI) superpuesta a sistemas operativos basados en texto y fue diseñado para ejecutarse en DOS. Para iniciarlo, WINse utilizaba el comando, que podía añadirse al final del archivo AUTOEXEC.BAT para permitir la carga automática de Windows. En las versiones anteriores, se podía ejecutar un archivo de tipo .bat desde Windows en el símbolo del sistema de MS-DOS. Windows 3.1x y versiones anteriores, así como Windows 9x, utilizaban COMMAND.COM para ejecutar archivos por lotes.
Sistema operativo/2
El sistema operativo IBM OS/2 admitía archivos por lotes al estilo DOS. También incluía una versión de REXX , un lenguaje de scripting para archivos por lotes más avanzado . IBM y Microsoft comenzaron a desarrollar este sistema, pero durante su construcción rompieron su colaboración tras una disputa. Como resultado, IBM se refería a su consola tipo DOS sin mencionar a Microsoft, simplemente llamándola DOS, aunque esto aparentemente no afectaba el funcionamiento de los archivos por lotes desde COMMAND.COM.
El intérprete de archivos por lotes de OS/2 también admite el comando EXTPROC. Este comando pasa el archivo por lotes al programa especificado en el archivo EXTPROC como un archivo de datos. El programa especificado puede ser un archivo de script; esto es similar al mecanismo #! utilizado por los sistemas operativos tipo Unix .
Windows NT
A diferencia de Windows 98 y versiones anteriores, la familia de sistemas operativos Windows NT no depende de MS-DOS. Windows NT introdujo un intérprete de comandos de 32 bits mejorado ( cmd.exe ) que podía ejecutar scripts con las extensiones .CMD o .BAT. Cmd.exe añadió comandos adicionales e implementó los existentes de forma ligeramente diferente, por lo que el mismo archivo por lotes (con una extensión distinta) podía funcionar de forma diferente con cmd.exe y COMMAND.COM. En la mayoría de los casos, el funcionamiento es idéntico si no se utilizan los pocos comandos no compatibles. Las extensiones de Cmd.exe a COMMAND.COM se pueden deshabilitar para garantizar la compatibilidad.
Microsoft lanzó una versión de cmd.exe para Windows 9x y ME llamada WIN95CMD para permitir a los usuarios de versiones anteriores de Windows utilizar ciertos archivos por lotes al estilo de cmd.exe.
A partir de Windows 8cmd.exe es el intérprete de comandos normal para archivos por lotes; el antiguo COMMAND.COM también se puede ejecutar en versiones de 32 bits de Windows capaces de ejecutar programas de 16 bits. [ nb 1 ]
extensiones de nombre de archivo
- .murciélago
- La primera extensión de archivo utilizada por Microsoft para archivos por lotes. Esta extensión funciona con DOS y todas las versiones de Windows, bajo COMMAND.COM o cmd.exe, a pesar de las diferentes formas en que ambos intérpretes de comandos ejecutan los archivos por lotes.
- .cmd
- Se utiliza para archivos por lotes en la familia Windows NT y se envía a cmd.exe para su interpretación. COMMAND.COM no reconoce esta extensión de nombre de archivo, por lo que los scripts de cmd.exe no se ejecutan en el entorno incorrecto de Windows por error. Además, los comandos
append,dpath,ftype,set,path,assocyprompt, cuando se ejecutan desde un archivo .bat, modifican el valor de laerrorlevelvariable solo en caso de error, mientras que desde dentro de un archivo .cmd, afectarían errorlevel incluso cuando no devuelven ningún error. [ 3 ] También lo utiliza el sistema operativo OS/2 de IBM para archivos por lotes. - .btm
- La extensión utilizada por 4DOS , 4OS2 , 4NT y Take Command . Estos scripts son más rápidos, especialmente con los más largos, ya que el script se carga completamente listo para su ejecución, en lugar de línea por línea. [ 4 ]
COMMAND.COM y cmd.exe pueden ejecutar un archivo por lotes incluso si su nombre de archivo se escribe sin extensión. Por ejemplo, si DoThisse introduce, el intérprete intenta las siguientes extensiones en el orden dado: COM, .EXE, .BAT, .CMD, y otras siete extensiones no relacionadas con este tema. La variable de entorno PATHEXT puede cambiar el valor predeterminado mencionado anteriormente.
Parámetros del archivo por lotes
COMMAND.COM y cmd.exe admiten variables especiales ( %0, %1a %9) para referirse a la ruta y el nombre del trabajo por lotes y los primeros nueve parámetros de llamada desde dentro del trabajo por lotes, véase también SHIFT. Los parámetros inexistentes se reemplazan por una cadena vacía. Se pueden usar de forma similar a las variables de entorno , pero no se almacenan en el entorno. Microsoft e IBM se refieren a estas variables como parámetros de reemplazo o parámetros reemplazables , mientras que Digital Research , Novell y Caldera establecieron el término variables de reemplazo [ 5 ] para ellas. JP Software las llama parámetros de archivo por lotes . [ 6 ]
Ejemplos
Este archivo por lotes de ejemplo muestra Hello World!un mensaje, solicita la entrada del usuario y espera a que pulse una tecla, para luego finalizar. (Los comandos pueden estar en minúsculas o mayúsculas, pero los nombres de las variables distinguen entre mayúsculas y minúsculas).
@ ECHO OFF ECHO ¡ Hola mundo! PAUSAPara ejecutar el archivo, debe guardarse con la extensión .bat (o .cmd para sistemas operativos tipo Windows NT) en formato de texto plano, normalmente creado con un editor de texto como el Bloc de notas de Microsoft o un procesador de texto que funcione en modo de texto plano.
Al ejecutarse, se muestra lo siguiente:
¡Hola Mundo! Pulsa cualquier tecla para continuar...
Explicación
El intérprete ejecuta cada línea por turno, comenzando por la primera. El @símbolo al inicio de cada línea impide que el indicador muestre ese comando mientras se ejecuta. El comando ECHO OFFdesactiva el indicador de forma permanente, o hasta que se vuelva a activar. El combinado @ECHO OFFsuele ser, como aquí, la primera línea de un archivo por lotes, impidiendo que se muestren todos los comandos, incluido él mismo. A continuación, se ejecuta la siguiente línea y el ECHO Hello World!comando muestra Hello World!. Se ejecuta la siguiente línea y el PAUSEcomando muestra Press any key to continue . . .y pausa la ejecución del script. Después de pulsar una tecla, el script finaliza, ya que no hay más comandos. En Windows, si el script se ejecuta desde una ventana del símbolo del sistema ya abierta , la ventana permanece abierta en el indicador como en MS-DOS; de lo contrario, la ventana se cierra al finalizar.
Limitaciones y excepciones
Valores nulos en variables
Las expansiones de variables se sustituyen textualmente en el comando, por lo que las variables vacías simplemente desaparecen de la sintaxis y las que contienen espacios se convierten en múltiples tokens. Esto puede provocar errores de sintaxis o fallos.
Por ejemplo, si %foo% está vacío, esta instrucción:
SI %foo% == bar ECO Igual analiza como la construcción errónea:
SI ==barra ECO IgualDe manera similar, si %foo%contiene abc def, entonces se produce un error de sintaxis diferente:
SI abc def == bar ECO Igual La forma habitual de evitar este problema es encerrar las expansiones de variables entre comillas, de modo que una variable vacía se expanda en la expresión válida IF ""=="bar"en lugar de la inválida IF ==bar. El texto que se compara con la variable también debe ir entre comillas, ya que estas no son una sintaxis delimitadora especial; estos caracteres se representan a sí mismos.
SI " %foo% " == "bar" ECO Igual La expansión diferida de !VARIABLE! disponible en Windows 2000 y versiones posteriores puede utilizarse para evitar estos errores sintácticos. En este caso, las variables nulas o de varias palabras no presentan errores sintácticos porque el valor se expande después de que se analiza el comando IF:
SI !foo! == bar ECHO Igual Otra diferencia en Windows 2000 o superior es que una variable vacía (indefinida) no se sustituye. Como se describe en ejemplos anteriores, el comportamiento anterior del intérprete de lotes habría dado como resultado una cadena vacía. Ejemplo:
C:\> establecer MyVar = C:\> echo %MyVar% %MyVar%C:\> if " %MyVar% " == "" ( echo MyVar no está definido ) else ( echo MyVar es %MyVar% ) MyVar es %MyVar%Los intérpretes de lotes anteriores a Windows 2000 habrían mostrado el resultado MyVar is not defined.
Comillas y espacios en las cadenas pasadas
A diferencia de los procesos Unix/POSIX, que reciben sus argumentos de línea de comandos ya divididos por el intérprete de comandos en una matriz de cadenas, un proceso de Windows recibe la línea de comandos completa como una sola cadena, a través de la función API GetCommandLine. Como resultado, cada aplicación de Windows puede implementar su propio analizador para dividir la línea de comandos completa en argumentos. Muchas aplicaciones y herramientas de línea de comandos han desarrollado su propia sintaxis para ello, por lo que no existe una convención única para entrecomillar o escapar metacaracteres en las líneas de comandos de Windows.
- Para algunos comandos, los espacios se tratan como delimitadores que separan los argumentos, a menos que dichos espacios estén entre comillas. Existen diversas convenciones sobre cómo se pueden pasar las comillas a la aplicación:
- Una convención ampliamente utilizada se implementa mediante el analizador de línea de comandos integrado en la biblioteca de tiempo de ejecución de Microsoft Visual C++ o en la función CommandLineToArgvW. Esta convención establece que 2n barras invertidas seguidas de comillas (") producen n barras invertidas seguidas de comillas de inicio/fin, mientras que (2n ) +1 barras invertidas seguidas de comillas producen nuevamente n barras invertidas seguidas de comillas literales. La misma convención forma parte de la especificación de .NET Framework . [ 7 ]
- Un aspecto no documentado es que la presencia de "" en medio de una cadena entre comillas produce una sola comilla. [ 7 ] (Un cambio en la CRT en 2008 [msvcr90] modificó este manejo no documentado de las comillas. [ 8 ] ) Esto resulta útil para insertar una comilla en un argumento sin reactivar la interpretación de los metacaracteres de cmd como | , & y > . (cmd no reconoce el carácter \" habitual como escape de la comilla. Reactiva estos significados especiales al ver la comilla, pensando que la cita ha terminado).
- Otra convención es que una comilla simple ( " ) no se incluye como parte de la cadena. Sin embargo, una comilla escapada ( """ ) puede formar parte de la cadena.
- Otra convención común proviene del uso de programas portados derivados de Cygwin . No distingue entre barras invertidas que aparecen antes o después de las comillas. Consulte glob (programación) § Windows y DOS para obtener información sobre estos analizadores de línea de comandos alternativos. [ 9 ]
- Algunos comandos importantes de Windows, como
cmd.exeywscript.exe, utilizan sus propias reglas. [ 8 ]
- Una convención ampliamente utilizada se implementa mediante el analizador de línea de comandos integrado en la biblioteca de tiempo de ejecución de Microsoft Visual C++ o en la función CommandLineToArgvW. Esta convención establece que 2n barras invertidas seguidas de comillas (") producen n barras invertidas seguidas de comillas de inicio/fin, mientras que (2n ) +1 barras invertidas seguidas de comillas producen nuevamente n barras invertidas seguidas de comillas literales. La misma convención forma parte de la especificación de .NET Framework . [ 7 ]
- Para otros comandos, los espacios no se tratan como delimitadores y, por lo tanto, no necesitan comillas. Si se incluyen comillas, pasan a formar parte de la cadena. Esto se aplica a algunos comandos integrados como echo .
Cuando una cadena de texto contiene comillas y debe insertarse en otra línea de texto que también debe ir entre comillas, se requiere prestar especial atención al mecanismo de comillas:
C:\> establecer foo = "esta cadena está entre comillas"C:\> echo "prueba 1 %foo% " "prueba 1 "esta cadena está entre comillas""C:\> eventcreate /T Advertencia /ID 1 /L Sistema /SO "Origen" /D "Ejemplo: %foo% " ERROR: Argumento/Opción no válido: 'cadena'. Escriba "EVENTCREATE /?" para ver su uso.En Windows 2000 y versiones posteriores, la solución consiste en reemplazar cada aparición de un carácter de comilla dentro de un valor por una serie de tres caracteres de comilla:
C:\> establecer foo = "esta cadena está entre comillas"C:\> establecer foo = %foo:"="""%C:\> echo "prueba 1 %foo% " "prueba 1 """esta cadena está entre comillas""""C:\> eventcreate /T Advertencia /ID 1 /L Sistema /SO "Origen" /D "Ejemplo: %foo% " ÉXITO: Se ha creado un evento de tipo 'Advertencia' en el registro/origen 'Origen'.Caracteres escapados en cadenas
Algunos caracteres, como |el carácter de barra vertical ( ), tienen un significado especial en la línea de comandos. No se pueden imprimir como texto usando el comando ECHO a menos que se escapen usando el símbolo de intercalación ^:
C:\> echo foo | bar 'bar' no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes.C:\> echo foo ^| bar foo | barSin embargo, el escape no funciona como se espera al insertar el carácter escapado en una variable de entorno. La variable termina conteniendo un comando de tubería activo cuando simplemente se muestra con echo. Es necesario escapar tanto el propio circunflejo como el carácter escapado para que el carácter se muestre como texto en la variable:
C:\> set foo = bar | baz 'baz' no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes.C:\> set foo = bar ^| baz C:\> echo %foo% 'baz' no se reconoce como un comando interno o externo, programa ejecutable o archivo por lotes.C:\> establecer foo = barra ^^^| baz C:\> echo %foo% barra | bazLa expansión retardada disponible con o con en Windows 2000 y versiones posteriores se puede utilizar para mostrar caracteres especiales almacenados en variables de entorno porque el valor de la variable se expande después de que se haya analizado el comando:
C:\> cmd /V:ON Microsoft Windows [Versión 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Todos los derechos reservados.C:\> establecer foo = barra ^| baz C:\> eco !foo! barra | bazSueño o retraso programado
Hasta que se introdujo el comando TIMEOUT con Windows Vista, no existía una manera sencilla de implementar una pausa programada, ya que el comando PAUSE detiene la actividad del script indefinidamente hasta que se presiona cualquier tecla.
Existían muchas soluciones alternativas, [ 10 ] pero generalmente solo funcionaban en algunos entornos: el CHOICEcomando no estaba disponible en versiones antiguas de DOS, PINGsolo estaba disponible si TCP/IP estaba instalado, etc. Microsoft no ofrecía ninguna solución, pero se podían instalar varios programas de utilidad pequeños desde otras fuentes. Un ejemplo comercial sería el comando Norton Utilities Batch Enhancer (BE) de 1988, que BE DELAY 18esperaba 1 segundo, o el WAIT.COM gratuito de 94 bytes [ 11 ] que WAIT 5esperaba 5 segundos y luego devolvía el control al script. La mayoría de estos programas son archivos .COM de 16 bits, por lo que son incompatibles con Windows de 64 bits.
Salida de texto con CR/LF eliminados.
Normalmente, a todo texto impreso se le añaden automáticamente los caracteres de control de retorno de carro (CR) y salto de línea (LF) al final de cada línea.
- batchtest.bat
@ echo foo @ echo bar
C:\> batchtest.bat foo bar
No importa si los dos comandos echo comparten la misma línea de comandos; los códigos CR/LF se insertan para dividir la salida en líneas separadas:
C:\> @ echo Mensaje 1 &@ echo Mensaje 2 Mensaje 1 Mensaje 2Un truco descubierto en Windows 2000 y versiones posteriores consiste en usar el mensaje especial de entrada para mostrar texto sin salto de línea (CR/LF) al final del texto. En este ejemplo, el salto de línea no sigue al Mensaje 1, pero sí a la Línea 2 y a la Línea 3:
- batchtest2.bat
@ echo off set /p = "Mensaje 1" < nul echo Mensaje 2 echo Mensaje 3
C:\> batchtest2.bat Mensaje 1 Mensaje 2 Mensaje 3
Esto se puede utilizar para generar datos en un archivo de texto sin añadir CR/LF al final:
C:\> set /p = "Mensaje 1" < nul > data.txt C:\> set /p = "Mensaje 2" < nul >> data.txt C:\> set /p = "Mensaje 3" < nul >> data.txt C:\> type data.txt Mensaje 1Mensaje 2Mensaje 3Sin embargo, no hay forma de inyectar esta salida de solicitud CR/LF eliminada directamente en una variable de entorno.
Establecer un directorio de trabajo de Convención de Nombres Uniformes (UNC) a partir de un acceso directo.
No es posible tener un símbolo del sistema que utilice una ruta UNC como directorio de trabajo actual; por ejemplo\\server\share\directory\
El símbolo del sistema requiere el uso de letras de unidad para asignar un directorio de trabajo, lo que dificulta la ejecución de archivos por lotes complejos almacenados en un recurso compartido UNC del servidor. Si bien un archivo por lotes se puede ejecutar desde una ruta de archivo UNC, el directorio de trabajo predeterminado es C:\Windows\System32\.
En Windows 2000 y versiones posteriores, una solución alternativa es usar el comando PUSHDy POPDcon extensiones de comando. [ nb 2 ]
Si no están habilitadas de forma predeterminada, las extensiones de comandos se pueden habilitar temporalmente mediante el /E:ONinterruptor del intérprete de comandos.
Para ejecutar un archivo por lotes en un recurso compartido UNC, asignar una letra de unidad temporal a dicho recurso compartido UNC y utilizarlo como directorio de trabajo, se puede crear un acceso directo de Windows con el siguiente aspecto:
- Objetivo:
El atributo de directorio de trabajo de este acceso directo se ignora.
Esto también resuelve un problema relacionado con el Control de cuentas de usuario (UAC) en Windows Vista y versiones posteriores. Cuando un administrador inicia sesión con UAC habilitado e intenta ejecutar un archivo por lotes como administrador desde una unidad de red, mediante el menú contextual del botón derecho del ratón, la operación falla inesperadamente. Esto se debe a que el contexto de cuenta con privilegios elevados de UAC no tiene asignadas letras de unidad de red, y no es posible asignar letras de unidad para el contexto elevado a través del Explorador de Windows o los scripts de inicio de sesión. Sin embargo, al crear un acceso directo al archivo por lotes con la estructura PUSHD/ mencionada anteriormente POPDy usar dicho acceso directo para ejecutar el archivo por lotes como administrador, se creará y eliminará la letra de unidad temporal en el contexto de cuenta elevada, y el archivo por lotes funcionará correctamente.
La siguiente sintaxis se expande correctamente a la ruta del script por lotes actual.
%~dp0
Las rutas UNC predeterminadas están desactivadas por defecto, ya que solían provocar fallos en programas antiguos. [ 12 ]
El valor de registro Dword DisableUNCChecken HKEY_CURRENT_USER\Software\Microsoft\Command Processor[ 12 ] permite que el directorio predeterminado sea UNC. CDEl comando se negará a cambiarlo, pero puede colocar una ruta UNC en el Directorio predeterminado en un acceso directo a Cmd o usando el comando Inicio. ( C$compartir es para administradores).
Conjunto de caracteres
Los archivos por lotes utilizan un conjunto de caracteres OEM, definido por el equipo, por ejemplo, la página de códigos 437. Las partes no ASCII de estos conjuntos de caracteres son incompatibles con los conjuntos de caracteres Unicode o Windows que se utilizan en Windows, por lo que se debe tener cuidado. [ 13 ] Los nombres de archivo que no estén en inglés solo funcionan si se introducen mediante un editor compatible con el conjunto de caracteres de DOS. Los nombres de archivo con caracteres fuera de este conjunto no funcionan en los archivos por lotes.
Para obtener un símbolo del sistema con caracteres Unicode en lugar de la página de códigos 437 o similar, se puede usar el cmd /Ucomando. En dicho símbolo del sistema, funcionará un archivo por lotes con nombres de archivo Unicode. También se puede usar cmd /Upara ejecutar directamente comandos con caracteres Unicode. Por ejemplo, crea un archivo que contiene una lista de directorios con los caracteres correctos de Windows, en la codificación UTF-16 LE.cmd /U /C dir > files.txt
Virus y malware por lotes
Al igual que con cualquier otro lenguaje de programación, los archivos por lotes pueden usarse con fines maliciosos. Es fácil crear troyanos simples y bombas de bifurcación , y los archivos por lotes pueden realizar una forma de envenenamiento DNS modificando el archivo hosts . Los virus por lotes son posibles y también pueden propagarse a través de unidades flash USB utilizando la función de ejecución automática de Windows . [ 14 ]
El siguiente comando en un archivo por lotes eliminará todos los datos del directorio (carpeta) actual, sin solicitar confirmación previa:
del /Q *.* Estos tres comandos son una simple bomba fork que se replicará continuamente para agotar los recursos disponibles del sistema, ralentizando o provocando su caída:
: TOP inicio "" %0 ir a TOPOtros lenguajes de scripting de Windows
El procesador de comandos cmd.exe , que interpreta archivos .exe .baty .exe .cmd, es compatible con todas las versiones de la familia Windows NT , Windows CE y ReactOS . El antiguo COMMAND.COM, que solo interpreta .batarchivos .exe, está disponible en Windows 9x y en las ediciones de 32 bits de Windows NT; por lo tanto, no está disponible en Windows 11 , que es exclusivamente de 64 bits.
Sin embargo, Microsoft Windows incluye entornos de scripting más avanzados:
- Windows Script Host (obsoleto) : lanzado en 1998 con Windows 98 , consta de
cscript.exeywscript.exe, ejecuta scripts escritos en VBScript o JScript (con extensiones .vbs , .js y .wsf ). Puede ejecutarlos en modo ventana (con elwscript.exehost) o en modo basado en consola (con elcscript.exehost). Ha sido obsoleto en Windows 11 . - MSHTA (obsoleto) : introducido en Microsoft Windows en 1999, junto con el lanzamiento de Microsoft Internet Explorer 5,
mshta.exees un medio para crear scripts con gran riqueza gráfica cuyo código fuente está compuesto de HTML , CSS y JScript . - PowerShell es un intérprete de comandos gratuito, de código abierto , multiplataforma y orientado a objetos que aprovecha las API de .NET . PowerShell se lanzó originalmente en 2006 como un complemento de código cerrado para Windows XP y Windows Vista . Desde entonces, se ha incluido en todas las versiones posteriores de Windows. Diez años después, PowerShell se convirtió en código abierto y multiplataforma. Puede funcionar tanto de forma interactiva (desde una interfaz de línea de comandos) como mediante scripts guardados ( archivos .ps1 ). La sintaxis de scripting permite ampliar aún más PowerShell mediante módulos de script ( archivos .psm ) y módulos binarios ( archivos .dll ). Los comandos de PowerShell utilizan un formato "Verbo-Sustantivo" para facilitar su rápida identificación.
Existen otros lenguajes de scripting disponibles para Windows. Sin embargo, para poder utilizarlos, es necesario instalar el intérprete del lenguaje de scripting.
- Extended Batch Language (EBL) ( .bat ) — desarrollado por Frank Canova como un proyecto personal mientras trabajaba en IBM en 1982. Posteriormente fue vendido por Seaware Corp como intérprete y compilador principalmente para DOS, pero más tarde también para Windows.
- KiXtart ( .kix ) — desarrollado por un empleado de Microsoft en 1991, específicamente para satisfacer la necesidad de comandos útiles en un script de inicio de sesión de red, manteniendo al mismo tiempo la "sensación" simple de un archivo .cmd.
- Se pueden utilizar lenguajes de scripting de shell de estilo Unix si se instala una herramienta de compatibilidad con Unix como Cygwin , o si se utiliza el Subsistema de Windows para Linux (WSL).
- Para Windows están disponibles herramientas de scripting multiplataforma como Perl , Python , Ruby , Rexx , Node.js y PHP .
Véase también
- Lista de comandos de DOS
- Script de shell , un "archivo por lotes" de Unix y Linux.
Notas
- ↑ Para verificar que COMMAND.COM sigue disponible (en el directorio \WINDOWS\SYSTEM32), escriba
COMMAND.COMen el símbolo del sistema de Windows 7 de 32 bits. - ↑ "Si las extensiones de comandos están habilitadas, el comando PUSHD acepta rutas de red además de la letra de unidad y la ruta normales. Si se especifica una ruta de red, PUSHD crea una letra de unidad temporal que apunta a ese recurso de red especificado y luego cambia la unidad y el directorio actuales, utilizando la letra de unidad recién definida. Las letras de unidad temporales se asignan desde Z: hacia abajo, utilizando la primera letra de unidad no utilizada que se encuentre." --Ayuda de PUSHD en Windows 7
Referencias
- ↑ "Uso de archivos por lotes: secuencias de comandos; servicios de administración" . Technet.microsoft.com. 21 de enero de 2005. Archivado del original el 28 de diciembre de 2011. Consultado el 30 de noviembre de 2012 .
- ↑ Henry-Stocker, Sandra (18 de julio de 2007). "Utilice sus habilidades de programación en Unix para escribir un archivo por lotes" . itworld.com . IT World. Archivado del original el 14 de junio de 2018. Consultado el 13 de junio de 2018 .
- ↑ "Diferencia entre bat y cmd | WWoIT - Wayne's World of IT" . waynes-world-it.blogspot.fr . 15/11/2012. Archivado del original el 02/03/2014 . Consultado el 30/11/2012 .
- ↑ "Extensión de archivo btm :: todo sobre el tipo de archivo .btm" . Cryer.co.uk. Archivado del original el 11 de octubre de 2008. Consultado el 30 de noviembre de 2012 .
- ↑ Guía del usuario de Caldera DR-DOS 7.02 , Caldera, Inc. , 1998 [1993, 1997], archivado del original el 05/11/2016 , consultado el 10/08/2013.
- ↑ Brothers, Hardin; Rawson, Tom ; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (27 de febrero de 2002). Ayuda en línea de 4DOS 8.00 .
- 1 2 ".NET Core Runtime: System.Diagnostics.Process.Unix" . GitHub . Archivado del original el 29/03/2023 . Recuperado el 11/02/2020 .
Dos comillas dobles consecutivas dentro de una región inQuotes deberían resultar en una comilla doble literal (el analizador se queda en la región inQuotes). Este comportamiento no forma parte de la especificación de code:ParseArgumentsIntoList, pero es compatible con CRT y .NET Framework.
- 1 2 Deley, David. "Cómo se analizan los parámetros de la línea de comandos" . Archivado del original el 8 de junio de 2020. Recuperado el 8 de junio de 2020 .
- ↑ "Documentación de procesos secundarios, sección Línea de comandos de Windows, NodeJS PR #29576" . GitHub . Archivado del original el 21/08/2022 . Consultado el 11/02/2020 .
- ↑ "Cómo hacer un retardo" Archivado el 20/11/2011 en Wayback Machine , ericphelps.com
- ↑ "Utilidades para DOS, con enlaces a WAIT.ZIP (archivo de WAIT.COM) y otros programas" . Archivado del original el 13/11/2011 . Consultado el 15/11/2011 .
- 1 2 "Cmd.exe no admite nombres UNC como directorio actual" . Archivado del original el 18 de mayo de 2015. Recuperado el 28 de abril de 2015 .
- ↑ Chen, Raymond . "Mantén los ojos en la página del código" . Microsoft . Archivado del original el 17 de enero de 2012. Recuperado el 13 de diciembre de 2011 .
- ↑ Archivos por lotes: el arte de crear virus. Archivado el 29/10/2013 en Wayback Machine.
Enlaces externos
- Referencia de archivos por lotes de Microsoft Windows XP
- Comandos de archivos por lotes de Windows 10
- Enlaces de programación de scripts de la interfaz de línea de comandos de Windows
- DOS en ordenadores compatibles con IBM
- Administración de Windows
- Lenguajes de scripting