2009-02-23 67 views
5

Tôi muốn in kết quả của một chương trình trong MS-DOS vì vậy tôi đã viết một tập tin .bat nói rằng:Làm thế nào để in một dòng mới trong một kịch bản MS-DOS?

cls 
ruby foo.rb 

Nhưng đầu ra - như nó xuất hiện trên cửa sổ lệnh của tôi - trông như thế này:

c:\workspace>ruby foo.rb 
foo output 
c:\workspace> 

Tôi muốn chèn một dòng mới vào đầu ra bằng MS-DOS vì tôi không muốn gây ô nhiễm mã Ruby của mình với bất kỳ thứ gì không liên quan đến mã được cho là đang làm gì.

Lệnh duy nhất trong MS-DOS giống như những gì tôi muốn là 'loại' và 'in' nhưng cả hai đều dành cho các tệp in.

Tôi đã thử tạo một tệp văn bản có hai dòng trống và xuất nó bằng lệnh 'loại' nhưng có vẻ lộn xộn.

Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao.

+0

câu hỏi kinh điển là * (http.. [Làm thế nào bạn có thể echo một dòng mới trong các tập tin batch?]://stackoverflow.com/questions/132799/how-can-you-echo-a-newline-in-batch-file S)*. –

+0

@PeterMortensen Bất chấp sự giống nhau về tiêu đề, đó là một câu hỏi khác. Câu hỏi này yêu cầu cách xuất một dòng trống.Câu hỏi bạn đã liên kết hỏi làm thế nào để xuất hai từ trên mỗi dòng riêng của họ. –

Trả lời

24

echo. sẽ sản xuất một dòng mới.

Vì vậy, kịch bản của bạn nên tìm một cái gì đó như thế này:

@ECHO OFF 
cls 
echo. 
ruby foo.rb 
+2

Bạn đã cứu tôi khỏi cái chết nhất định. Cảm ơn bạn. –

+0

Sử dụng tiếng vọng ([thay vì] (http://stackoverflow.com/a/3123194/209129) –

3

Hãy thử điều này

echo. 
2

Sử dụng lệnh echo theo sau là một khoảng thời gian để hiển thị một dòng mới trong một tập tin batch MS-DOS:

echo. 
0

Tôi không rõ ràng về những gì bạn muốn ở đây, nhưng có lẽ điều này sẽ giúp.

Nếu bạn muốn đầu ra được gửi đến một nơi khác, hãy sử dụng đầu ra dos "pipe".

ruby foo.rb > out.txt 

sẽ xuất kết quả đầu ra của lệnh ruby ​​sang tệp out.txt.

Nếu bạn muốn kiểm soát đầu ra, hãy sử dụng ECHO.

@ECHO OFF/ON //turns off/on command output 
ECHO "Blah" //writes "Blah" to the console. 
ECHO. //writes a blank line to the console. 
+1

Điều cuối cùng không lặp lại một dòng trống. Nó lặp lại "on" hoặc "off" tùy thuộc vào trạng thái được thiết lập bởi Để có được một dòng trống, bạn phải 'echo.' như những người khác đã chỉ ra. – beltorak

4

thế nào về:

@echo off 
cls 
echo. 
ruby foo.rb 
echo. 

tạm biệt

+0

aww, StingJack đến đầu tiên :) –

+0

mà upvote là để thử ... 80) – Keng

+0

ha! thank you =) –

4

Ngay cả khi đây là 4 câu trả lời với đầu cùng sử dụng ECHO., nó không phải là giải pháp tốt nhất!

Có hai hạn chế.

  1. Đó là chậm
    ECHO. là ~ chậm hơn so với bình thườngecho lệnh 10 lần, đó là bởi vì ECHO. sẽ buộc một truy cập đĩa

  2. Nó có thể thất bại
    Nếu một tập tin tồn tại với tên ECHO (không gia hạn) thì mỗi lệnh ECHO. sẽ dẫn đến tệp không tìm thấy lỗi, thay vì lặp lại dòng trống.

Nhưng bạn có thể làm gì sau đó?
Đối với một dòng trống đơn giản, có nhiều cách làm việc.

echo+ 
echo= 
echo; 
echo, 
echo: 
echo(

Nhưng đôi khi bạn muốn có một cách an toàn để echo nội dung của một biến ngay cả khi biến là rỗng hoặc chứa nội dung kỳ quặc như /? hoặc \\..\..\windows\system32\calc.exe.

ECHO<character>%variable%

echo=/? 
echo;/? 
echo,/? 
echo:\\..\..\windows\system32\calc.exe 

Sau đó, hầu hết các lệnh sẽ thất bại, chỉ ECHO( công trình trong mọi tình huống.
Có vẻ hơi lạ, nhưng nó hoạt động và không cần cũng không gây ra bất kỳ sự cố nào với khung đóng.

+0

"' ECHO.' sẽ buộc truy cập đĩa "thực sự? – npostavs

1

Tôi đồng ý với jeb. "echo (" chắc chắn là nhanh hơn và không gọi một truy cập tập tin. Chỉ cần thử nó và bạn sẽ biết cho chính mình. Đây là một thử nghiệm nhỏ mà bạn có thể muốn thử.

Tạo một tệp có tên "echo" và trong cùng thư mục tạo ra một test.bat hoặc tập tin test.cmd có nội dung sau đây trong kịch bản:.?

@echo off 
echo %time% 
echo. 
echo Hello, World 
echo. 
echo. 
echo What time is it? 
echo. 
echo It's Miller Time! 
echo. 
echo. 
echo CHEERS! 
echo. 
echo %time% 

Chạy tập tin thực thi mới được tạo ra để bạn có được gì một loạt các thông báo lỗi khi một tập tin " echo "tồn tại trong cùng một thư mục.

Bây giờ, hãy xóa tệp" echo ".

Trên hệ thống của tôi, mất khoảng 0,05 giây từ lúc bắt đầu đến khi kết thúc bằng phương pháp "echo" ("echo") do việc truy cập tập tin diễn ra.

Bây giờ, hãy thay thế tất cả "echo". trong file thử nghiệm trên với "echo (" và chạy nó một lần nữa.

Mất khoảng 0,01 giây từ đầu đến cuối bằng cách sử dụng "echo (" tuyên bố.

thử nghiệm cuối cùng, giới thiệu lại một tập tin gọi là "echo "trong cùng thư mục và chạy hàng loạt một lần cuối cùng

Không thông báo lỗi

QED

Các vấn đề liên quan