2012-05-30 19 views
9

En Unix me gustaría hacer algo como:¿Cómo redirige la entrada estándar a un archivo en la línea de comandos de Windows?

cat > file.txt 

¿Cómo puedo hacer esto en el símbolo del sistema de Windows o archivo por lotes?

EDIT: Básicamente, estoy buscando para la funcionalidad de cat sin argumentos (se lee de la entrada estándar y la escupe de vuelta a la salida estándar).

+1

'escriba thisfile> output.txt' empuja todos los resultados igual que en Unix cat 'type thisfile >> output.txt' agrega todos los resultados al archivo sin sobreescribir – Kyle

+0

+1 para usar' type' como una solución tan simple y genial. –

+0

@DominicP excepto que no funciona para mis propósitos (lea después del "EDIT:") – Matt

Respuesta

16

TYPE CON

CON es el dispositivo de MS-DOS para la entrada de la consola. Puede redirigir a un archivo de la siguiente manera:

TYPE CON>output.txt

Para terminar, golpeó Ctrl + C o Ctrl + Z, Introduzca (Ctrl + Z = EOF).

+0

¡Durante demasiado tarde, pero finalmente una respuesta no alternativa! ¡Gracias! – Matt

+1

¡Ah, lol! Aunque podría ser útil para otros, supongo ... ¡Probablemente soy la única persona de mi edad que conoce el elegante atajo 'TYPE CON> LPT1' para convertir MS-DOS en una máquina de escribir! –

+1

Existen alternativas de Windows a muchos comandos * nix, pero "evolucionaron" en lugar de estar inteligentemente diseñados como bash, por lo que son un poco más difíciles de encontrar y, a menudo, mucho más complejos de usar de lo que deberían ser ... Un gran ejemplo de esta diferencia es el bash backtick vs. el equivalente constructo 'FOR' en DOS. ¡Gracias a Dios por los guiones Powershell y C#! –

0

de entrada estándar:

archivo por lotes:

:: set /p MyVar= Prompts user for stdin information 

set /p MyVar= 

echo %MyVar% > filename 
+0

Esto tendría que leer la totalidad de stdin primero, ¿o no? Parece que sería poco práctico si stdin es muy grande. – Matt

8

Si lo que quieres es leer la entrada estándar y escribir lo que se lee en la salida estándar, entonces FINDSTR va a funcionar.

findstr "^" 

Puede suministrar stdin a través de una redirección o una tubería.

FINDSTR "^" es muy similar a cat en que generará la entrada binaria exacta sin modificaciones.

Si también es idéntico a cat si se especifica un único archivo de entrada.

findstr "^" fileName 

De nuevo, la salida será una copia binaria exacta.

La funcionalidad diverge si se especifican varios archivos de entrada porque en ese caso el nombre del archivo se usará como un prefijo para cada línea de salida.

También difiere de cat en que no puede leer tanto de stdin como de un archivo con nombre.

EDITAR
Tenga en cuenta que FINDSTR añadirá al final de la línea de marcadores <CR><LF> al hilo de entrada si el último carácter de la secuencia de entrada no es un <LF>. Esta es una función de FINDSTR y no del mecanismo de tubería de Windows. FINDSTR no agrega <CR><LF> a la entrada redirigida. FINDSTR se bloqueará indefinidamente en XP y Windows 7 si lee la entrada redirigida y la última línea no finaliza con <LF>. Vea What are the undocumented features and limitations of the Windows FINDSTR command? para más información.

+0

EDITAR - Información corregida acerca de la entrada canalizada que tiene un CR/LF adjunto. Información agregada sobre XP y Windows 7 potencialmente colgando con la entrada redirigida – dbenham

+0

¡Gracias por esta respuesta! Para cualquier otra persona, un archivo de proceso por lotes que escribe (agrega) stdin en el archivo "foo.txt" es: findstr "^" >> foo.txt –

4

Creo que more.exe podría ser lo que estás buscando.

Se puede tomar tanto de entrada desde la consola:

more > file1.txt 

O hilo desde otro archivo, que TYPE CONno mango:

type file1.txt | more > file2.txt 

(more parece que añadir una nueva línea ¡a su archivo y expande las pestañas, así que no lo use en datos binarios!)

+0

En realidad, este me ayudó cuando tuve varias líneas. Gracias – TheGameiswar

Cuestiones relacionadas