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

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

cat > file.txt

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

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

 Dominic P07 мар. 2013 г., 21:49
@ Matt, да, это не совсем то же самое. Я не уверен, сколько вы работали с оболочкой Windows, но найти такое близкое приближение к функциональности * nix довольно редко / приятно в моем опыте. :)
 Dominic P01 мар. 2013 г., 02:34
+ 1 за использованиеtype такое классное и простое решение.
 Kyle30 мая 2012 г., 23:02
type thisfile > output.txt выдвигает все выходные так же, как unix cattype thisfile >> output.txt добавляет весь вывод в файл без перезаписи
 Matt07 мар. 2013 г., 02:12
@ DominicP за исключением того, что он не работает для моих целей (читайте после "РЕДАКТИРОВАТЬ:")

Ответы на вопрос(4)

Решение Вопроса

TYPE CON

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

TYPE CON>output.txt

Чтобы прекратить, нажмите Ctrl + C или Ctrl + Z, Войт ( Ctrl + Z = EOF).

 Matt31 июл. 2013 г., 17:39
не забудь Cygwin!
 Mark K Cowan31 июл. 2013 г., 17:40
А как я мог забыть упомянуть Cygwin на этой машине с двойной загрузкой? : D
 Matt23 июл. 2013 г., 21:47
Слишком поздно, но, наконец, безрассудный ответ! Благодарность
 Mark K Cowan24 июл. 2013 г., 15:26
Ах, лол! Я думаю, это может быть полезно для других ... Я, наверное, единственный человек моего возраста, который знает об элегантномTYPE CON>LPT1 ярлык, чтобы превратить MS-DOS в пишущую машинку!
 Mark K Cowan31 июл. 2013 г., 17:34
Windows альтернативы многим * nix командам существуют, но они «эволюционировали», а не были интеллектуально спроектированы, как bash, поэтому их немного сложнее найти и зачастую гораздо сложнее использовать, чем следовало бы ... Примером этой разницы является обратный удар bash по сравнению с эквивалентнымFOR построить в DOS. Слава Богу за Powershell и C # скрипт!

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

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

findstr "^" file.txt

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

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

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

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

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

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

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

 dbenham15 авг. 2018 г., 22:17
@ EgorSkriptunoff - я обновил ответ, включив ограничение на длину строки.
 dbenham15 авг. 2018 г., 21:37
@ EgorSkriptunoff - Пределы каналов и ограничения перенаправления Длина входной строки FINDSTR. Укажите входной файл в качестве аргумента (просто удалите<), а не использовать перенаправление, и оно должно работать. Видеть Пределы длины раздел на Stackoverflow.com / а / 8844873/1012053 для получения дополнительной информации
 Robert Calhoun30 нояб. 2012 г., 18:26
Спасибо за этот ответ! Для всех остальных существует пакетный файл, который записывает (добавляет) стандартный ввод в файл "foo.txt": findstr "^" >> foo.txt
 Egor Skriptunoff15 авг. 2018 г., 18:57
@ dbenham -findstr "^" < %windir%\system32\calc.exe > c.exe даетLine is too long ошибка на Win7. Не подходит для бинарного копирования?
 dbenham29 нояб. 2012 г., 18:32
EDIT - Исправлена информация о вводе по каналу с добавлением CR / LF. Добавлена информация о возможном зависании XP и Windows 7 при перенаправленном вводе

more.exe может быть то, что вы ищете.

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

more > file1.txt

Или из другого файла, которыйTYPE CON Не справиться

type file1.txt | more > file2.txt

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

 TheGameiswar22 окт. 2017 г., 18:54
На самом деле это помогло, когда у меня было несколько строк. Спасибо

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

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

set /p MyVar=

echo %MyVar% > filename
 Matt30 мая 2012 г., 23:08
Впрочем, сначала нужно прочитать весь стандартный ввод, не так ли? Кажется, что это будет нецелесообразно, если стандартный ввод очень большой.

Ваш ответ на вопрос