varios sirven script que programacion por para msdos lotes los ejemplos ejecutar comandos comando codigos batch bat archivos batch-file cmd io-redirection

batch-file - script - para que sirven los archivos batch



¿Por qué algunos comandos procesan líneas de datos STDIN redirigidos que ya están siendo consumidos por otros comandos? (0)

Supongamos que tenemos el siguiente fragmento de código con un archivo de texto sample.txt redirigido a STDIN :

@echo off < "sample.txt" ( set /P "ONE=" set /P "TWO=" findstr /R "^" ) echo %ONE%, %TWO%

... y el contenido del archivo de texto relacionado sample.txt :

first second third fourth

La salida devuelta en la consola va a ser esta, que es exactamente lo que espero (las líneas first y second son consumidas por set /P , por lo que findstr recibe y procesa las líneas restantes):

third fourth first, second

La misma salida se logra cuando findstr /R "^" se reemplaza por sort /R

Sin embargo, al reemplazar la línea de comando de findstr por find /V "" o por more , la salida será:

first second third fourth first, second

Parece que aunque set /P ya consumió las líneas first y second cual es probado por la última línea de salida, find y aún more recibe los datos redirigidos completos.

¿Por qué es esto? ¿Qué causa este comportamiento? ¿Hay alguna manera de forzar el find o more para recibir solo los datos reorientados restantes que no han sido procesados ​​por un comando anterior?

(El comportamiento es el mismo cuando se redirigen los datos de salida STDOUT a un archivo de texto. Además, al ejecutar directamente una línea de comando similar al código de lote anterior en cmd , nada cambia).