2012-05-30 3 views
9

В Unix Я хотел бы сделать что-то вроде:Как перенаправить стандартный ввод в файл в командной строке Windows?

cat > file.txt 

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

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

+1

'type thisfile> output.txt' выводит все выходные данные как unix cat 'type thisfile >> output.txt' добавляет весь вывод в файл без перезаписи – Kyle

+0

+1 для использования' type' такого крутого и простого решения. –

+0

@ DominicP за ​​исключением того, что он не работает для моих целей (читайте после «EDIT:») – Matt

ответ

16

TYPE CON

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

TYPE CON>output.txt

Для завершения, нажмите Ctrl + C или Ctrl + Z, Введите (Ctrl + Z = EOF).

+0

Слишком поздно, но, наконец, не обходной ответ! Благодаря! – Matt

+1

Ah lol! Возможно, это было бы полезно для других, хотя я думаю ... Я, наверное, единственный человек, мой возраст, который знает об элегантном ярлыке 'TYPE CON> LPT1', чтобы превратить MS-DOS в пишущую машинку! –

+1

Альтернативы Windows для многих команд * nix существуют, но они «развивались», а не были разумно разработаны как bash, поэтому их немного сложнее найти и часто гораздо сложнее в использовании, чем они должны быть ... Отличная примером этой разницы является байт-байт против эквивалентной конструкции 'FOR' в DOS. Слава богу за Powershell и скрипт C#! –

0

Стандартный вход:

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

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

set /p MyVar= 

echo %MyVar% > filename 
+0

Это должно было бы прочитать весь stdin сначала, хотя, не так ли? Похоже, было бы непрактично, если бы stdin был очень большим. – Matt

8

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

findstr "^" 

Вы можете поставить stdin через перенаправление или трубу.

FINDSTR "^" очень похож на кошку, так как он выдает точный двоичный вход без изменений.

Если также идентичен cat, если указан один входной файл.

findstr "^" fileName 

Опять же, выход будет точной бинарной копией.

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

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

EDIT
Обратите внимание, что FINDSTR добавит конец-линии маркеров <CR><LF> к конвейеру вход, если самый последний символ входного потока не <LF>. Это функция FINDSTR, а не механизм Windows. FINDSTR не добавляет <CR><LF> к перенаправленному вводу. FINDSTR будет вешать бесконечно на XP и Windows 7 при чтении перенаправленного ввода, а последняя строка не заканчивается <LF>. См. What are the undocumented features and limitations of the Windows FINDSTR command? для получения дополнительной информации.

+0

РЕДАКТИРОВАТЬ - Исправлена ​​информация о входе в канал с добавлением CR/LF. Добавлена ​​информация о XP и Windows 7, потенциально зависающих с перенаправленным вводом – dbenham

+0

Спасибо за этот ответ! Для любого другого там командный файл, который записывает (добавляет) stdin в файл «foo.txt», это: findstr "^" >> foo.txt –

4

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

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

more > file1.txt 

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

type file1.txt | more > file2.txt 

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

+0

На самом деле это помогло, когда у меня было несколько строк. Спасибо – TheGameiswar

Смежные вопросы