2012-05-30 13 views
9

Trên Unix tôi sẽ làm một cái gì đó như:Làm thế nào để bạn chuyển hướng đầu vào tiêu chuẩn vào một tệp trong dòng lệnh Windows?

cat > file.txt 

Làm thế nào tôi có thể làm điều này trên dấu nhắc lệnh Windows hoặc tập tin thực thi?

CHỈNH SỬA: Về cơ bản, tôi đang tìm kiếm chức năng của cat không có đối số (nó đọc từ stdin và đưa nó trở lại chế độ stdout).

+1

'loại thisfile> output.txt' đẩy tất cả đầu ra giống như unix cat 'type thisfile >> output.txt' nối tất cả đầu ra vào tập tin mà không ghi đè lên – Kyle

+0

+1 để sử dụng' loại' như một giải pháp đơn giản và mát mẻ. –

+0

@DominicP ngoại trừ việc nó không hoạt động cho mục đích của tôi (đọc sau khi "EDIT:") – Matt

Trả lời

16

TYPE CON

CON là thiết bị MS-DOS cho đầu vào bàn điều khiển. Bạn có thể chuyển hướng đến một tập tin như sau:

TYPE CON>output.txt

Để chấm dứt, nhấn Ctrl + C hay Ctrl + Z, Nhập (Ctrl + Z = EOF).

+0

Qua năm quá muộn, nhưng cuối cùng là câu trả lời không giải quyết sự cố! Cảm ơn! – Matt

+1

Ah lol! Nó có thể hữu ích cho những người khác mặc dù tôi đoán ... Tôi có lẽ là người duy nhất tuổi tôi biết về phím tắt "LOẠI CON> LPT1" thanh lịch để biến MS-DOS thành một máy đánh chữ! –

+1

Các lựa chọn thay thế Windows cho nhiều lệnh * nix tồn tại - nhưng chúng "tiến hóa" thay vì được thiết kế thông minh như bash, vì vậy chúng khó tìm và thường phức tạp hơn nhiều so với chúng ... ví dụ về sự khác biệt này là backtick bash so với cấu trúc 'FOR' tương đương trong DOS. Cảm ơn trời cho Powershell và C# script! –

0

đầu vào tiêu chuẩn:

hàng loạt file:

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

set /p MyVar= 

echo %MyVar% > filename 
+0

Điều này sẽ phải đọc toàn bộ stdin đầu tiên mặc dù, phải không? Có vẻ như sẽ không thực tế nếu stdin rất lớn. – Matt

8

Nếu tất cả các bạn muốn là để đọc stdin và viết những gì bạn đọc để stdout, sau đó FINDSTR sẽ làm việc.

findstr "^" 

Bạn có thể cung cấp stdin thông qua chuyển hướng hoặc đường ống.

FINDSTR "^" rất giống với mèo ở chỗ nó sẽ xuất ra đầu vào nhị phân chính xác mà không sửa đổi.

Nếu cũng trùng với con mèo nếu chỉ định một tệp đầu vào.

findstr "^" fileName 

Một lần nữa đầu ra sẽ là bản sao nhị phân chính xác.

Chức năng phân tách nếu nhiều tệp đầu vào được chỉ định vì trong trường hợp đó, tên của tệp sẽ được sử dụng làm tiền tố cho mỗi dòng đầu ra.

Nó cũng khác với mèo ở chỗ nó không thể đọc cả từ stdin và tệp được đặt tên.

EDIT
Lưu ý rằng FINDSTR sẽ nối end-of-line dấu <CR><LF> để cấp nước tập trung đầu vào nếu nhân vật cuối cùng của dòng đầu vào không phải là một <LF>. Đây là chức năng của FINDSTR chứ không phải cơ chế ống Windows. FINDSTR không thêm <CR><LF> vào đầu vào được chuyển hướng. FINDSTR sẽ treo vô thời hạn trên XP và Windows 7 nếu đọc đầu vào được chuyển hướng và dòng cuối cùng không kết thúc bằng <LF>. Xem What are the undocumented features and limitations of the Windows FINDSTR command? để biết thêm thông tin.

+0

EDIT - Thông tin được sửa về đầu vào đường ống có CR/LF được nối thêm. Đã thêm thông tin về XP và Windows 7 có khả năng bị treo với đầu vào được chuyển hướng – dbenham

+0

Cảm ơn bạn đã trả lời câu trả lời này! Đối với bất kỳ ai khác ngoài đó, một tệp hàng loạt ghi (stend) stdin vào tệp "foo.txt" là: findstr "^" >> foo.txt –

4

Tôi nghĩ rằng more.exe có thể là những gì bạn đang tìm kiếm.

Có thể mất đầu vào cả từ giao diện điều khiển:

more > file1.txt 

Hoặc đường ống từ tập tin khác, mà TYPE CONkhông xử lý:

type file1.txt | more > file2.txt 

(more dường như thêm một dòng mới vào tệp của bạn và mở rộng các tab, do đó, không sử dụng nó trên dữ liệu nhị phân!)

+0

Trên thực tế điều này đã giúp khi tôi có dòng mutiple.Cảm ơn bạn – TheGameiswar