2011-10-24 33 views
58

Làm cách nào để đọc đầu vào từ bảng điều khiển trong một tệp lô? Những gì tôi đang cố gắng để đạt được là chức năng của scanf trong C. Làm thế nào tôi có thể làm tương tự trong một tập tin thực thi?Làm thế nào để đọc đầu vào từ bàn điều khiển trong một tập tin thực thi?

+0

bản sao có thể có của [Sự cố với đầu vào của người dùng trong tệp lô của tôi] (http://stackoverflow.com/questions/916413/problem-with-user-input-in-my-batch-file) –

+0

@ Raymond: Không , câu hỏi là đọc nhiều ký tự dưới dạng chuỗi từ bàn phím thành biến. – Nohsib

+0

Lệnh 'set/p' đọc bất kỳ kiểu người dùng nào, cho dù đó là một chữ cái hay nhiều. –

Trả lời

96

Đoạn mã trong bản sao được đề xuất được liên kết đọc dữ liệu nhập của người dùng.

ECHO A current build of Test Harness exists. 
set /p delBuild=Delete preexisting build [y/n]?: 

Người dùng có thể nhập bao nhiêu chữ cái tùy thích và ký tự sẽ chuyển sang biến delBuild.

+0

đã nhận nó !!! Cảm ơn – Nohsib

+22

Lưu ý: bạn có thể sử dụng đầu vào của người dùng với '% delBuild%' – Jacob

+1

Phải lưu ý rằng 'echo! DelBuild!' Sẽ cung cấp cho bạn đầu ra đáng tin cậy hơn khi thực thi 'setlocal EnableDelayedExpansion' được bật – xacinay

8

Ngoài câu trả lời hiện tại chúng ta có thể thiết lập một tùy chọn mặc định như sau:

ECHO A current build of Test Harness exists. 
set delBuild=n 
set /p delBuild=Delete preexisting build [y/n] (default - n)?: 

này cho phép người dùng chỉ cần nhấn "Enter" nếu họ muốn nhập mặc định.

10

Giống như mọi người đang nói, sử dụng set /p varname="prompt message" là đủ. Nếu bạn chỉ cần một cách nhanh chóng tìm cách để giữ một trường hợp cmd mở thay vì thoát ngay lập tức, chỉ cần làm như sau là đủ

set /p temp="Hit enter to continue" 

ở phần cuối của kịch bản của bạn và nó sẽ giữ cho các cửa sổ đang mở.

+9

cho mục đích này, ai đó đã phát minh ra lệnh 'pause'. Nó cũng là 'set/p', không phải' set \ p'. – Stephan

+4

"Như mọi người đang nói", ngụ ý rằng câu trả lời đã được đưa ra, vì vậy một câu trả lời khác mà không cần thêm thông tin là không cần thiết – jeb

+1

@ jeb bạn nói đúng. vấn đề của tôi là chúng bao gồm các biến và tiếng vọng, trong khi tôi không cần bất kỳ thứ gì trong số đó. Tôi mất một hoặc hai phút để phân tích câu trả lời của họ, vì tôi không có kinh nghiệm thực hành. Tôi tin rằng câu trả lời của tôi thỏa mãn câu trả lời tối thiểu phù hợp với nhu cầu của tôi. – TankorSmash

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