Làm thế nào để đọc đầu vào từ bảng điều khiển trong một tệp hàng loạt?


82

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



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

Lệnh set /pđọc bất kỳ thứ gì người dùng nhập, cho dù đó là một ký tự hay nhiều ký tự.
Raymond Chen

@ Raymond: bạn có thể vui lòng chia sẻ một đoạn mã về điều đó được không ..
Nohsib 24/10/11

Câu trả lời:


141

Đoạn mã trong bản sao được đề xuất được liên kết đọc thông tin đầu vào 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 họ muốn và nó sẽ chuyển vào biến delBuild.


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

1
Phải thông báo rằng echo !delBuild!sẽ cung cấp cho bạn một kết quả đáng tin cậy hơn vào thực hiện khi setlocal EnableDelayedExpansionkích hoạt
xacinay

29

Nếu bạn chỉ muốn nhanh chóng giữ một phiên bản cmd mở thay vì thoát ngay lập tức, chỉ cần làm như sau là đủ

set /p asd="Hit enter to continue"

ở cuối tập lệnh của bạn và nó sẽ giữ cho cửa sổ mở.

Lưu ý rằng điều này sẽ được đặt asdlàm biến môi trường và có thể được thay thế bằng bất kỳ biến nào khác.


15
cho mục đích này, ai đó đã phát minh ra pauselệnh. Ngoài ra nó set /p, không phải set \p.
Stephan

6
"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 về lô. Tôi tin rằng câu trả lời của tôi đáp ứng câu trả lời tối thiểu phù hợp với nhu cầu của tôi.
TankorSmash vào

@Stephan cảm ơn anh bạn, trên cả hai số lượng. Tôi đang tìm cách giữ phiên bản cmd để thoát sau khi tập lệnh đã hoàn thành, chỉ cần tạm dừng X time là không đủ.
TankorSmash vào

@ArslanAhmad Tôi vừa thử nghiệm, nó vẫn hoạt động từ cmd, nhưng không phải Powershell. Đảm bảo rằng bạn đang sử dụng đúng thứ.
TankorSmash

18

Ngoài câu trả lời hiện có, bạn có thể đặt một tùy chọn mặc định như sau:

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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.