Как перенаправить стандартный ввод в файл в командной строке 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