Как перенаправить стандартный ввод в файл в командной строке Windows?

в Unix я бы сделал что-то вроде:

cat > file.txt

Как это сделать в командной строке или пакетном файле Windows?

EDIT: в основном, я ищу функциональность cat без аргументов (он читает из stdin и выплевывает его обратно в stdout).

4 ответов


TYPE CON

CON - это устройство MS-DOS для консольного ввода. Вы можете перенаправить файл следующим образом:

TYPE CON>output.txt

чтобы завершить, нажмите Ctrl + C или Ctrl + Z, Enter (Ctrl + Z = EOF).


Если все, что вы хотите, это прочитать stdin и написать то, что Вы читаете в stdout, тогда FINDSTR может работать, в зависимости от того, как вы его используете.

FINDSTR выведет точное двоичное изображение ввода, если вход указан как одно имя файла в конце списка аргументов.

findstr "^" file.txt

трубы или перенаправление также могут работать, в зависимости от содержимого ввода:

findstr "^" < file.txt
or
type file.txt | findstr "^"

выход будет поврежден, если при использовании произойдет следующее перенаправленный или конвейерный вход с FINDSTR:

  • любая входная строка > 8191 байт
  • последняя строка ввода не заканчивается на \n. (команда может зависнуть при перенаправлении ввода)

FINDSTR не будет работать, если указано несколько входных файлов, потому что в этом случае имя файла будет использоваться в качестве префикса для каждой строки вывода.

FINDSTR также отличается от cat тем, что он не может читать как из stdin, так и из именованного файл.

посмотреть каковы недокументированные функции и ограничения команды Windows FINDSTR? для получения дополнительной информации.


Я думаю more.exe может быть то, что вы ищете.

Он может принимать входные данные из консоли:

more > file1.txt

или из другого файла, который TYPE CON не ручка:

type file1.txt | more > file2.txt

(more кажется, добавить новую строку в файл и расширяет вкладки, так что не используйте его на двоичных данных!)


стандартный ввод:

пакетный файл:

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

set /p MyVar=

echo %MyVar% > filename