- Protocolos de encaminamiento
-
Protocolos de encaminamiento
Usar archivos por lotesCon los archivos por lotes, que se denominan también programas de proceso por lotes o secuencias de comandos, puede simplificar tareas rutinarias o repetitivas. Un archivo por lotes es un archivo de texto sin formato que contiene uno o más comandos, y cuya extensión de nombre de archivo es .bat o .cmd. Al escribir el nombre del archivo en el símbolo del sistema, Cmd.exe ejecuta los comandos secuencialmente como aparecen en el archivo.
programacion batch:
Contenido
=======
- En un archivo por lotes se puede incluir cualquier comando. Determinados comandos, como for, goto e if, permiten que el proceso de los comandos del archivo por lotes varíe en función de ciertas condiciones. Por ejemplo, el comando if permite ejecutar un comando dependiendo de que se cumpla una condición. Otros comandos permiten controlar la entrada y salida del proceso y llamar a otros archivos de proceso por lotes.
Los códigos de error estándar que devuelven la mayoría de las aplicaciones son 0 si no se produjo ningún error y 1 (o un valor mayor) si se produjo un error. Consulte la documentación de ayuda de la aplicación para determinar el significado de los códigos de error específicos.
Para obtener más información acerca del funcionamiento de los archivos de proceso por lotes, consulte los temas siguientes:
Usar parámetros de proceso por lotes Usar filtros Usar operadores de redirección de comandos Para obtener más información acerca de los comandos que se pueden utilizar en los archivos de proceso por lotes, haga clic en un comando:
Call Echo Endlocal For Goto If Pause Rem Setlocal Shift
_________________________________________________________________________________________________________________________________________________________________________________________________
Usar parámetros de proceso por lotes:=========================
Puede usar parámetros de proceso por lotes dentro de un archivo por lotes para extraer información de la configuración del entorno.
Cmd.exe proporciona las variables de expansión de parámetros de proceso por lotes entre %0 y %9. Al utilizar parámetros de procesos por lotes en un archivo por lotes, %0 se reemplaza por el nombre del archivo por lotes y las variables %1 a %9 se reemplazan por los argumentos correspondientes escritos en la línea de comandos. Para tener acceso a argumentos posteriores a %9, necesita utilizar el comando shift. Para obtener más información acerca del comando shift , consulte Shift. El parámetro de proceso por lotes %* es una referencia de caracteres comodín para todos los argumentos, sin incluir %0, que se pasan al archivo de proceso por lotes.
Por ejemplo, para copiar el contenido de Carpeta1 a Carpeta2, donde %1 se reemplaza por el valor Carpeta1 y %2 se reemplaza por el valor Carpeta2, escriba el texto siguiente en un archivo por lotes llamado MiLote.bat:
xcopy %1\*.* %2
Para ejecutar el archivo, escriba:
mybatch.bat C:\carpeta1 D:\carpeta2
Esto tiene el mismo efecto que escribir lo siguiente en el archivo por lotes:
xcopy C:\carpeta1 \*.* D:\carpeta2
También puede usar modificadores con parámetros de proceso por lotes. Los modificadores utilizan información de la unidad y directorio actual para expandir el parámetro de proceso por lotes como si se tratara de un archivo o nombre de directorio completo. Para usar un modificador, escriba el carácter de porcentaje (%) seguido del carácter tilde (~) y, a continuación, escriba el modificador apropiado (%~modificador).
La tabla siguiente enumera los modificadores que puede usar en expansión.
Modificador Descripción %~1 Expande %1 y quita todas las comillas (""). %~f1 Expande %1 y lo convierte en un nombre de ruta de acceso completo. %~d1 Expande %1 a una letra de unidad. %~p1 Expande %1 a una ruta de acceso. %~n1 Expande %1 a un nombre de archivo. %~x1 Expande %1 a una extensión de archivo. %~s1 Ruta de acceso expandida que únicamente contiene nombres cortos. %~a1 Expande %1 a atributos de archivo. %~t1 Expande %1 a una fecha/hora de archivo. %~z1 Expande %1 a un tamaño de archivo. %~$PATH:1 Busca los directorios enumerados en la variable de entorno PATH y expande %1 al nombre completo del primer directorio encontrado. Si el nombre de la variable de entorno no está definido o la búsqueda no encuentra el archivo, este modificador se expande a la cadena vacía.
La tabla siguiente enumera las combinaciones posibles de modificadores y calificadores que puede usar para obtener resultados compuestos.
Modificador Descripción %~dp1 Expande %1 a una letra de unidad y una ruta de acceso. %~nx1 Expande %1 a un nombre y extensión de archivo. %~dp$PATH:1 Busca los directorios enumerados en la variable de entorno PATH para %1 y expande a la letra de unidad y ruta de acceso del primer directorio encontrado. %~ftza1 Expande %1 a una línea de salida similar a dir.
Nota
En los ejemplos anteriores, puede reemplazar %1 y PATH con otros valores de parámetros de proceso por lotes. El modificador %* es un modificador único que representa todos los argumentos pasados en un proceso por lotes. No puede usar este modificador combinándolo con el modificador %~. La sintaxis %~ debe terminarse con un número de argumento válido.
No puede manipular parámetros de proceso por lotes de la misma manera en que manipula variables de entorno. No puede buscar y reemplazar valores ni examinar subcadenas. Sin embargo, puede asignar el parámetro a una variable de entorno para, después, manipular la variable de entorno.
Utilizar filtros:=====
Si se utiliza en combinación con el carácter de barra vertical de redirección de comandos (|), un filtro de comandos es un comando dentro de otro que lee la entrada del comando, la transforma y, después, escribe el resultado. Los comandos de filtro ayudan a ordenar, ver y seleccionar partes de la información de salida de un comando.
Los comandos de filtro dividen, reorganizan o extraen partes de la información que pasa a través de los mismos. En la tabla siguiente se enumeran los comandos de filtro disponibles en Windows XP.
Comando Descripción more Muestra el contenido de un archivo o la información de salida de un comando en una ventana del símbolo del sistema cada vez. find Busca los caracteres especificados en archivos y en la información de salida de los comandos. sort Ordena alfabéticamente los archivos y la información de salida de los comandos.
Para enviar la información de entrada de un archivo a un comando de filtro, utilice el signo menor que (<). Si desea que el comando de filtro obtenga la información de entrada a partir de otro comando, utilice el carácter de barra vertical (|).
Utilizar el comando more El comando more muestra el contenido de un archivo o la información de salida de un comando en una ventana del símbolo del sistema cada vez. Por ejemplo, para mostrar el contenido de un archivo denominado Lista.txt en una ventana del símbolo del sistema cada vez, escriba:
more < lista.txt
Aparecerá una ventana del símbolo del sistema con información y el símbolo -- Más -- en la parte inferior de la ventana. Para pasar a la siguiente ventana del símbolo del sistema, presione cualquier tecla del teclado, excepto PAUSA. Para detener el comando sin ver más información, presione CTRL+C.
El comando more resulta útil si está trabajando con un comando que produce información de salida en más de una ventana del símbolo del sistema. Por ejemplo, suponga que desea ver un árbol de directorios del disco duro. Si tiene más directorios de los que se pueden mostrar en la ventana del símbolo del sistema, puede usar el comando tree con una barra vertical (|) y el comando more, como en el ejemplo siguiente:
tree c:\ | more
Aparecerá la primera ventana del símbolo del sistema con la información de salida del comando tree, seguida del símbolo -- Más --. La información de salida se detiene hasta que presione cualquier tecla del teclado, excepto PAUSA.
Utilizar el comando find El comando find busca en los archivos la cadena o el texto que especifique. Cmd.exe muestra todas las líneas que coinciden con la cadena o el texto especificado en la ventana del símbolo del sistema. Puede usar el comando find como comando de filtro o como un comando estándar de Windows XP. Para obtener más información acerca de cómo utilizar find como comando estándar, consulte Find.
Para utilizar find como comando de filtro, debe incluir un signo menor que (<) y la cadena o el texto que desea buscar. De forma predeterminada, las búsquedas que realiza el comando find distinguen entre mayúsculas y minúsculas. Por ejemplo, el siguiente comando busca la cadena "Pacific Rim" en el archivo Trade.txt:
find "Pacific Rim" < trade.txt
La salida no incluye las apariciones de "pacific rim". Sólo incluye las apariciones de "Pacific Rim", con las mayúsculas.
Para guardar la información de salida del comando find, en lugar de mostrarla en la ventana del símbolo del sistema, escriba el signo mayor que (>) y el nombre del archivo en el que se va a guardar dicha información. Por ejemplo, el siguiente comando busca la cadena "Pacific Rim" en el archivo Trade.txt y guarda los resultados en el archivo Nwtrade.txt:
find "Pacific Rim" < trade.txt > nwtrade.txt
Utilizar el comando sort El comando sort ordena alfabéticamente un archivo de texto o la información de salida de un comando. Por ejemplo, el siguiente comando ordena el contenido de un archivo llamado Lista.txt y muestra los resultados en la ventana del símbolo del sistema:
sort < lista.txt
En este ejemplo, el comando sort ordena las líneas del archivo Lista.txt en una lista alfabética y muestra el resultado sin cambiar el archivo. Para guardar la información de salida del comando sort, en lugar de mostrarla en pantalla, escriba el signo mayor que (>) y un nombre de archivo. Por ejemplo, el siguiente comando ordena alfabéticamente las líneas del archivo Lista.txt y guarda el resultado en el archivo ListaAlf.txt:
sort < lista.txt > listaalf.txt
Para ordenar la información de salida de un comando, escriba el comando seguido de un carácter de barra vertical (|) y el comando sort (es decir, comando | sort). Por ejemplo, el siguiente comando ordena alfabéticamente las líneas que incluyen la cadena "Luisa" (es decir, la salida del comando find):
find "Luisa" listacorreo.txt | sort
____________________________________________________________________________________________________________________________________________________________________________________________
Utilizar los operadores de redirección de los comandos:===========================================
Los operadores de redirección se pueden utilizar para redirigir la entrada y la salida de los comandos de las ubicaciones predeterminadas a ubicaciones diferentes. A la ubicación de la entrada o la salida se le conoce como controlador.
La siguiente tabla muestra los operadores que se pueden utilizar para redirigir la entrada y la salida de los comandos.
Operador de redirección Descripción > Escribe la salida del comando en un archivo o un dispositivo, en lugar de en la ventana del Símbolo del sistema. < Lee la entrada del comando desde un archivo, en lugar de leerla desde el teclado. >> Añade la salida del comando al final de un archivo sin eliminar la información que ya está en el archivo. >& Escribe la salida de un controlador en la entrada de otro controlador. <& Lee la entrada desde un controlador y la escribe en la salida de otro controlador. | Lee la salida de un comando y la escribe en la entrada de otro comando. También se denomina canalización.
De forma predeterminada, la entrada del comando (es decir, el controlador STDIN) se envía desde el teclado a Cmd.exe y, a continuación, Cmd.exe envía la salida del comando (es decir, el controlador STDOUT) a la ventana del Símbolo del sistema.
La siguiente tabla muestra los controladores disponibles.
Controlador Equivalente numérico del controlador Descripción STDIN 0 Entrada de teclado STDOUT 1 Salida en la ventana del Símbolo del sistema. STDERR 2 Salida de errores en la ventana del Símbolo del sistema. UNDEFINED 3-9 Estos controladores están definidos individualmente por la aplicación y son específicos para cada programa.
Los números del cero al nueve (es decir, 0-9) representan los 10 primeros controladores. Cmd.exe se puede utilizar para ejecutar un programa y redirigir cualquiera de los 10 primeros controladores del programa. Para especificar qué controlador desea utilizar, escriba el número del controlador antes del operador de redirección. Si no define un controlador, el operador de redirección predeterminado < es cero (0) y el operador de redirección predeterminado > es uno (1). Después de escribir el operador < o >, tiene que especificar dónde desea leer o escribir los datos. Puede especificar un nombre de archivo u otro controlador existente.
Para especificar la redirección a controladores existentes, utilice el carácter & seguido del número del número del controlador que desea redireccionar (es decir , &controlador). Por ejemplo, el comando siguiente redirige el controlador 2 (es decir, STDERR) al controlador 1 (es decir, STDOUT):
1<&2
Duplicar controladores El operador de redirección & duplica la salida o la entrada de un controlador especificado en otro controlador especificado. Por ejemplo, para enviar la salida de dir a Archivo.txt y enviar la salida de errores a Archivo.txt, escriba:
dir>c:\archivo.txt 2>&1
Cuando se duplica un controlador, se duplican todas las características de la controlador original. Por ejemplo, si un controlador sólo tiene acceso de escritura, todos sus duplicados sólo tendrán acceso de escritura. No se puede duplicar un controlador que sólo tenga acceso de escritura en un controlador que sólo tenga acceso de lectura.
Redirigir la entrada de los comandos (<) Para redirigir la entrada de los comandos desde el teclado a un archivo o un dispositivo, utilice el operador <. Por ejemplo, para que el comando sort obtenga su entrada desde el archivo Archivo.txt:
sort<archivo.txt
El contenido de Archivo.txt aparece en la ventana del Símbolo del sistema como una lista alfabética.
El operador < abre el archivo especificado con acceso de sólo lectura. Como resultado, no se puede escribir en el archivo mediante este operador. Por ejemplo, si inicia un programa con <&2, todos los intentos de leer el controlador 0 fallan porque el controlador 2 está abierto inicialmente con acceso de sólo escritura.
Nota
El controlador predeterminado del operador de redirección < es el cero. Redirigir la salida de los comandos (>) Casi todos los comandos envían información a la ventana del Símbolo del sistema. Incluso los comandos que envían información a una unidad o una impresora también muestran mensajes e indicaciones en la ventana del Símbolo del sistema.
Para redirigir la salida de los comandos desde la ventana del Símbolo del sistema a un archivo o un dispositivo, utilice el operador >. Este operador se puede utilizar con la mayor parte de los comandos. Por ejemplo, para redirigir la salida de dir a ListaDir.txt:
dir>listadir.txt
Si ListaDir.txt no existe, Cmd.exe lo crea. En caso de que ListaDir.txt exista, Cmd.exe reemplaza la información del archivo con la salida del comando dir .
Para ejecutar el comando netsh routing dump y enviar la salida del comando a Route.cfg, escriba:
netsh routing dump>c:\route.cfg
El operador > abre el archivo especificado con acceso de sólo escritura. Como resultado, no se puede leer el archivo mediante este operador. Por ejemplo, si inicia un programa con la redirección <&0, todos los intentos de escribir el controlador 1 fallan porque el controlador 0 está abierto inicialmente con acceso de sólo lectura.
Nota
El controlador predeterminado del operador de redirección > es el uno. Usar el operador <& para redirigir la entrada y duplicar Para utilizar el operador de redirección de entrada <&, el archivo que especifique tiene que existir. Si el archivo de entrada existe, Cmd.exe lo abre en modo de sólo lectura y envía los caracteres que contiene como entrada del comando, como si fueran la entrada desde el teclado. Si especifica un controlador, Cmd.exe duplica el controlador especificado en el controlador existente del sistema.
Por ejemplo, para abrir Archivo.txt como entrada en el controlador 0 (es decir, STDIN), escriba:
<archivo.txt
Para abrir Archivo.txt, ordenar su contenido y enviar la salida a la ventana del Símbolo del sistema (es decir, STDOUT), escriba:
sort<archivo.txt
Para buscar Archivo.txt y redirigir el controlador 1 (es decir, STDOUT) y el controlador 2 (es decir, STDERR) a Buscar.txt, escriba:
findfile archivo.txt>buscar.txt 2<&1
Para duplicar un controlador definido por el usuario 3 como entrada en el controlador 0 (es decir, STDIN), escriba:
<&3
Usar el operador >& para redirigir la salida y duplicar Si redirige la salida a un archivo y especifica un archivo existente, Cmd.exe abre el archivo con acceso de sólo escritura y sobrescribe el contenido del archivo. Si especifica un controlador, Cmd.exe duplica el archivo en el controlador existente.
Para duplicar el controlador definido por el usuario 3 en el controlador 1, escriba:
>&3
Para redirigir toda la salida, incluyendo el controlador 2 (es decir, STDERR), del comando ipconfig al controlador 1 (es decir, STDOUT) y redirigir la salida a Salida.log, escriba:
ipconfig.exe>>salida.log 2>&1
Usar el operador de redirección >> para añadir la salida Para agregar la salida de un comando al final de un archivo sin que se pierda la información ya existente, utilice dos signos mayor que consecutivos (es decir, >>). Por ejemplo, el siguiente comando añade la lista del directorio generada por el comando dir al archivo ListaDir.txt:
dir>>listadir.txt
Para añadir ña salida del comando netstat al final de Tcpinfo.txt, escriba:
netstat>>tcpinfo.txt
Usar el operador de canalización (|) El operador de canalización (|) toma la salida (de forma predeterminada, STDOUT) de un comando y la redirige a la entrada (de forma predeterminada, STDIN) de otro comando. Por ejemplo, el comando siguiente ordena un directorio:
dir | sort
En este ejemplo, ambos comandos se inician simultáneamente, pero el comando sort espera hasta que recibe la salida del comando dir. El comando sort utiliza como entrada la salida del comando dir y, a continuación, envía su salida al controlador 1 (es decir, STDOUT).
Combinar comandos con operadores de redirección Puede crear comandos personalizados si combina comandos de filtrado con otros comandos y nombres de archivo. Por ejemplo, puede utilizar el siguiente comando para almacenar los nombres de archivo que contienen la cadena "LOG":
dir /b | find "LOG" > loglist.txt
La salida del comando dir se envía al comando de filtrado find. Los archivos cuyo nombre contiene la cadena de texto "LOG" se guardan en forma de lista de nombres de archivo (por ejemplo, NetshConfig.log, Logdat.svd y MiLog.bat) en el archivo ListaLog.txt.
Para utilizar más de un filtro en el mismo comando, separe los filtros por caracteres de barra vertical (|). Por ejemplo, el siguiente comando busca en todos los directorios de la unidad C los nombres de archivo que contienen la cadena “Log” y los muestra en la ventana del Símbolo del sistema, de ventana en ventana:
dir c:\ /s /b | find "LOG" | more
Al utilizar una canalización (|), se indica a Cmd.exe que envíe la salida del comando dir a través del comando de filtrado find. El comando find selecciona sólo los nombres de archivo que contienen la cadena de texto "LOG". El comando more muestra los nombres de archivo seleccionados por el comando find, de ventana en ventana. Para obtener más información acerca de los comandos de filtrado, consulte
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________
comando goto:
=
En un programa de proceso por lotes, dirige Windows XP a una línea identificada por una etiqueta. Al encontrar la etiqueta, procesa los comandos a partir de la siguiente línea.
Sintaxis goto etiqueta
Parámetros etiqueta Especifica la línea dentro de un programa por lotes a la que desea dirigirse. /? Muestra Ayuda en el símbolo del sistema. Notas Trabajar con extensiones de comandos Si las extensiones de comandos están habilitadas (valor predeterminado) y se utiliza el comando goto con una etiqueta de destino de :EOF, se transfiere el control al final del archivo de secuencias de comandos por lotes actual y se sale del mismo sin definir ninguna etiqueta. Cuando utilice goto con la etiqueta :EOF, deberá insertar dos puntos antes de dicha etiqueta. Por ejemplo:
goto :EOF
Para obtener una descripción de las extensiones del comando call que hacen útil esta característica, consulte cmd en los temas relacionados.
Utilizar valores de etiqueta válidos En el parámetro etiqueta se pueden utilizar espacios en blanco pero no otros separadores, como el punto y coma (;) o el signo igual (=). El comando goto utiliza únicamente los ocho primeros caracteres de una etiqueta. Por ejemplo, las etiquetas siguientes son equivalentes y se resuelven en :hithere0:
- hithere0
- hithere01
- hithere02
Hacer coincidir etiqueta con la etiqueta del programa por lotes El valor de etiqueta especificado deberá coincidir con una etiqueta existente en el programa por lotes. La etiqueta del programa por lotes debe comenzar por un signo de dos puntos (:). Windows XP reconoce como etiqueta una línea que comience por dos puntos (:) en un programa por lotes y no la procesa como comando. Si una línea comienza por un signo de dos puntos, se omiten los comandos que contenga. Si el programa por lotes no contiene la etiqueta especificada, dicho programa se detendrá y aparecerá el siguiente mensaje:
No se ha encontrado la etiqueta
Utilizar goto para operaciones condicionales Se puede utilizar el comando goto con otros comandos para realizar operaciones condicionales. Para obtener más información acerca del uso de goto para operaciones condicionales, consulte if en los temas relacionados.
_________________________________________________________________________________________________________________________________________________________________________________________________________________________
Wikimedia foundation. 2010.