Saltar al contenido principal

Extensiones de redirección de archivos de Windows en TCC

TCC admite los operadores de redirección de entrada/salida en CMD y los amplía para incluir nuevos redirección de Windows tipos y redirección UTF-8 y UTF-16.

La redirección se puede utilizar para reasignar los dispositivos de entrada estándar (stdin), salida estándar (stdout) y error estándar (stderr) desde sus configuraciones predeterminadas (el teclado y la pantalla) a otro dispositivo como NUL o un puerto serie, a un archivo. , o al portapapeles de Windows o al TCC pseudodispositivos CLIPn: y TMPn:. La redirección siempre se aplica a un comando específico y dura solo mientras dura ese comando. Cuando finaliza el comando, las asignaciones de entrada estándar, salida estándar y error estándar vuelven a sus valores anteriores.

TCCLa salida de normalmente está en ANSI. Si desea redirigir la salida en Unicode (UTF-8 o UTF-16), puede usar la opción de inicio /U en TCC, o la opción Salida Unicode en TCMD.INI, o la opción >: 8 or >:tú Sintaxis de redirección.

En las descripciones siguientes, nombre de archivo significa el nombre de un archivo o de un dispositivo apropiado (CON para el teclado y la pantalla; CLIP: (o CLIP0: - CLIP9:) para el portapapeles; NUL para el dispositivo "nulo", etc. ).

Estas son las opciones estándar de redirección de entrada/salida admitidas por TCC (consulte a continuación opciones de redirección adicionales utilizando identificadores de archivos numéricos):

Redirección de entrada

Para obtener información desde un archivo o dispositivo en lugar de hacerlo desde el teclado:

    < nombre de archivo

Redirección de salida

Sobrescribir STDOUT:

    > nombre de archivo

Agregar STDOUT:

    >> nombre de archivo

sobrescribir STDERR:

    >&> nombre de archivo

añadir STDERR:

    >>&> nombre de archivo

fusionar sobrescribir salida estándar y error estándar:

    >&

combinación de nombre de archivo agregar salida estándar y error estándar:

    >>& nombre de archivo

Para utilizar la redirección, coloque el símbolo de redirección y el nombre del archivo al final de la línea de comando, después del nombre del comando y cualquier parámetro. Por ejemplo, para redirigir la salida del comando DIR a un archivo llamado DIRLIST, podrías usar una línea de comando como esta:

    dir /b *.dat > lista de directorios

Puede utilizar cualquier combinación de redirección de entrada y salida para el mismo comando, según corresponda a su propósito. Por ejemplo, este comando envía entrada al programa externo SORT desde el archivo DIRLIST y envía salida de SORT al archivo DIRLIST.SRT:

    ordenar lista de directorios.srt

Puede redirigir texto hacia o desde el portapapeles de Windows utilizando el TCC nombre del pseudodispositivo CLIP: (los dos puntos son obligatorios). La redirección al portapapeles siempre se realiza mediante UTF16 Unicode. Si redirige la salida de un único comando interno como DIR, la redirección finaliza automáticamente cuando finaliza ese comando. Si inicia un archivo por lotes con redirección, toda la salida del archivo por lotes se redirige y la redirección finaliza cuando finaliza el archivo por lotes. De manera similar, si usa la redirección después del paréntesis de cierre de un grupo de comandos (por ejemplo, ...) > informe), se redirige toda la salida del grupo de comandos y la redirección finaliza cuando finaliza el grupo de comandos.

Puede cambiar el formato de la salida redirigida. Estas opciones anularán las directivas UnicodeOutput y UTF8Output en TCMD.INI. Nota: estas opciones sólo funcionan para redirigir la salida desde TCC comandos internos y archivos por lotes.

    >:a     La salida redirigida (STDOUT y/o STDERR) es ANSI (caracteres de 8 bits)

    >:tú     La salida redirigida es UTF16 Unicode

    >:8 o >:u8     La salida redirigida es UTF8

    >>:un     La salida redirigida adjunta (STDOUT y/o STDERR) es ANSI (caracteres de 8 bits)

    >>:tú     La salida redirigida adjunta es UTF16 Unicode

    >>:8 o >>:u8     La salida redirigida adjunta es UTF8

No Clobber

Cuando la salida se dirige a un archivo con >, >& o >&>, y ese archivo ya existe, se sobrescribirá. Puede proteger archivos existentes utilizando el comando SETDOS /N1, la configuración Proteger archivos de salida redirigidos en la pestaña Inicio de los cuadros de diálogo de configuración o la opción Proteger archivo de salida redirigido.

Cuando la salida se agrega a un archivo con >>, >>& o >>&>, el archivo se creará si aún no existe. Sin embargo, si el modo NoClobber está configurado como se describe anteriormente, la redirección de anexos no creará un archivo nuevo; en cambio, si el archivo de salida no existe, se mostrará un error "Archivo no encontrado" o similar.

Puede anular temporalmente la configuración actual de NoClobber utilizando un signo de exclamación [!] después del símbolo de redirección. Por ejemplo, para redirigir la salida de DIR al archivo DIROUT y permitir la sobrescritura de cualquier archivo existente a pesar de la configuración NoClobber:

    directorio >! suciedad

Múltiples redirecciones

La redirección es completamente anidable. Por ejemplo, puede invocar un archivo por lotes y redirigir toda su salida a un archivo o dispositivo. La redirección de salida de un comando dentro del archivo por lotes tendrá efecto únicamente para ese comando; cuando se complete el comando, la salida volverá al archivo de salida redirigido o al dispositivo en uso para el archivo por lotes en su conjunto.

Creando un archivo vacío

Puede utilizar la redirección para crear un archivo vacío (de cero bytes). Para hacerlo, ingresa  >nombre de archivo como comando, sin ningún comando real antes del carácter >. Si ha habilitado Proteger el archivo de salida redirigido, utilice >!nombredearchivo.

Redirección por identificador

Además de las opciones de redireccionamiento anteriores, TCC también admite la sintaxis CMD:

    n>archivo     Redirigir el identificador n al archivo nombrado

    n>&m    Redirigir el identificador n al mismo lugar que el identificador m

Advertencia: No puede poner espacios entre n y >, ni entre >, & y m en el segundo formulario. Los valores de n y m deben ser dígitos decimales únicos y representar identificadores de archivos. Windows define 0, 1 y 2 como.

    0 - entrada estándar

    1 - salida estándar

    2 - error estándar

La sintaxis n>file redirige la salida del identificador n al archivo. Puede utilizar este formulario para redirigir dos identificadores a lugares diferentes. Por ejemplo:

    dir > archivo de salida 2 > archivo de error

envía la salida normal a un archivo llamado OUTFILE y cualquier mensaje de error a un archivo llamado ERRFILE.

La sintaxis n>&m redirige el identificador n al mismo destino que el identificador m previamente asignado. Por ejemplo, para enviar un error estándar al mismo archivo como salida estándar, puede usar este comando:

    directorio > archivo de perfil 2>&1

Tenga en cuenta que puede realizar las mismas operaciones utilizando funciones de redireccionamiento estándar. Los dos ejemplos anteriores podrían escribirse como:

    dir > archivo de salida >&> archivo de error

y

    dir >& archivo de salida

Redirección "aquí-documento"

Siempre que se admita la redirección de entradas, puede utilizar un enfoque de "documento aquí" similar a Linux. La sintaxis es:

    programa << palabra

El archivo por lotes actual se lee hasta la siguiente aparición de la palabra y el texto resultante se convierte en una entrada estándar para el programa. Por ejemplo:

c:\test\program.exe << entrada final
entrada 1
entrada 2
entrada 3
entrada final
echo Esta es la siguiente línea después de "program.exe"

Características especiales de "aquí documento":

Si << va seguido de un guión (-), el espacio en blanco inicial de las siguientes líneas se eliminará antes de pasarlas al programa (es decir, estarán efectivamente justificadas a la izquierda).

El analizador realizará una expansión variable en cada línea, a menos que la palabra que sigue a << esté entre comillas dobles.

Redirección "aquí-cadena"

La "cadena aquí" le permite enviar texto de cadena directamente a la entrada de un programa. La sintaxis es:

programa <<< cadena

Esto es similar al uso de KEYSTACK, pero es más fácil de ingresar para ingresar texto. (Si necesita enviar claves especiales o insertar esperas, deberá usar KEYSTACK). Por ejemplo, para enviar una cadena a la entrada estándar del programa:

c:\test\program.exe <<< Este es un texto de entrada.

Extensiones de tuberías de Windows en TCC

La tubería es una forma especial de redirección, que utiliza una instancia adicional de TCC para cada instancia de la tubería especificada en la línea de comando. TCC admite operadores de tuberías en CMD y los amplía para incluir nuevos operadores de tuberías y tuberías UTF-8 y UTF-16.

Puede crear una tubería para enviar la salida estándar de un comando (comando1) a la entrada estándar de otro comando (comando2) y, opcionalmente, también enviar el error estándar:

lo que se envía a la tubería
formato de comando
solo salida estándar
comando 1 | comando 2
fusionar salida estándar y error estándar
comando 1 |& comando 2
error estándar solamente
comando1 |&| comando2

Por ejemplo, para tomar el resultado del comando ALIAS (que muestra una lista de sus alias y sus valores) y canalizarlo a la utilidad SORT externa para generar una lista ordenada, usaría el comando:

alias | clasificar

Para hacer lo mismo y luego canalizar la lista ordenada al comando VER interno para verla:

alias | ordenar | puntos de vista

Los comandos TEE e Y son "accesorios de tubería" que añaden más flexibilidad a Tuberías de Windows.

TCCLa salida de normalmente está en ANSI. Si desea redirigir la salida en Unicode, debe usar la opción de inicio /U en TCC, o la opción Salida Unicode en TCMD.INI.

Al igual que la redirección, las tuberías son totalmente encajables. Por ejemplo, puede invocar un archivo por lotes y enviar toda su salida a otro comando con una tubería. Una canalización en un comando dentro del archivo por lotes tendrá efecto solo para ese comando; cuando se complete el comando, la salida volverá a la canalización en uso para el archivo por lotes en su conjunto. También puede tener 2 o más canalizaciones funcionando simultáneamente si, por ejemplo, las canalizaciones se ejecutan en diferentes ventanas o procesos.

Procesamiento de cada línea recibida de una tubería

Para procesar cada línea de texto enviada por el lado izquierdo de una tubería en TCC, puede utilizar esta sintaxis:

directorio | para %archivo en (@CON:) comando %archivo

Este ejemplo muestra cómo pasar cada línea de datos canalizados a un comando.

ADVERTENCIAS: TCC implementa tuberías iniciando un nuevo proceso para el programa receptor. Este proceso pasa por el procedimiento de inicio de shell estándar, incluida la ejecución del archivo TCSTART, para CADA programa receptor. Todos los programas de envío y recepción se ejecutan simultáneamente; el programa emisor escribe en la tubería y el programa receptor lee en la tubería. Cuando el programa receptor encuentra una señal de fin de archivo, termina de leer y procesar los datos canalizados y finaliza. Cuando usas tuberías con TCC, asegúrese de considerar las posibles consecuencias de usar un proceso separado para ejecutar el programa receptor, especialmente que no puede crear/modificar/eliminar variables de entorno del programa emisor, y la inclusión de un comando para cambiar directorios en el archivo TCSTART puede causar la nuevo proceso para ejecutar en un directorio diferente. Cuando usa más de una tubería en un solo comando, p. En el segundo ejemplo anterior con LIST, cada tubería agrega otra instancia de TCC. Si necesita ejecutar la tubería en el mismo contexto, utilice tuberías en proceso (ver más abajo).

Visualización de la actividad de la tubería

La TCC VISTA DE TUBO El comando leerá desde STDIN y mostrará la actividad de la tubería en tiempo real en un VER ventana y al mismo tiempo reenviarla a STDOUT para que la siguiente aplicación la lea.

Comandos adicionales relacionados con tuberías

TCC tiene varios comandos adicionales de "instalación de tuberías":

  • TEE se utiliza normalmente para "dividir" la salida de un programa para que pueda verlo en la pantalla y también guardarlo en un archivo. También se puede utilizar para capturar resultados intermedios antes de que otro programa o comando modifique los datos.

  • Y copia la entrada estándar a la salida estándar. Una vez que finaliza la entrada, los archivos nombrados se agregan a la salida estándar. 

  • PEE es similar a TEE, pero en lugar de redirigir STDOUT a múltiples archivos, lo redirige a múltiples comandos secundarios a través de tuberías. Debe encerrar cada comando (y cualquier argumento) entre comillas dobles.

Tuberías en proceso

Las canalizaciones en proceso funcionan como las canalizaciones de DOS de estilo antiguo, creando un archivo de salida temporal, redirigiendo STDOUT a ese archivo y luego redirigiendo el archivo temporal a STDIN del siguiente comando. La sintaxis es:

comando1 |! comando2

Esto es lo mismo que hacer:

comando1 > temp.dat y comando2 < temp.dat

pero es más fácil de escribir y leer.

La ventaja de las canalizaciones en proceso es que comando2 se ejecutará en el mismo contexto que comando1, por lo que puede hacer cosas como modificar variables de entorno sin descartarlas cuando se cierre comando2. También existen algunas desventajas al utilizar este tipo de "pseudo-tubería": normalmente será más lento que una tubería verdadera; utilizará algo de espacio en disco para su archivo temporal; y el comando2 no se iniciará hasta que el comando1 haya salido.

Tubería de salida ANSI, Unicode y UTF-8

Puede cambiar el formato de salida enviada a una tubería. Estas opciones anularán las directivas UnicodeOutput y UTF8Output en TCMD.INI. Las opciones de salida canalizada también funcionan con tuberías en proceso (es decir, |!:u). Nota: estas opciones sólo funcionan para redirigir la salida desde TCC comandos internos y archivos por lotes.

|:a La salida por tubería es ANSI
|:u La salida canalizada es UTF16 Unicode
|:8 o |:u8 La salida canalizada es UTF8