2009-02-19 7 views
6

Có cách nào để nhắc người dùng nhập liệu (ví dụ: Có/Không) từ tập lệnh batch của Windows hoạt động trên máy chủ XP và Windows 2003 không? Có vẻ như một số lệnh (ví dụ: lựa chọn) chỉ hoạt động trên một hệ điều hành và không hoạt động trên một hệ điều hành khác.Lệnh chọn hàng loạt Windows cho Windows XP & 2003

Trả lời

8

Sử dụng lệnh SET bằng nút chuyển/P.

+2

khoảng thời gian chờ và mặc định như thế nào? – Baczek

6
SET /P RESULT=Y or N? 
ECHO %RESULT% 
6

Lưu ý rằng lệnh SET /P không hỗ trợ tất cả các tính năng tương tự như lệnh CHOICE. Cụ thể:

  • Nó không hạn chế người dùng nhập vào một giá trị hợp lệ
  • Người dùng phải nhấn enter
  • Bạn cần phải kiểm tra xem có sự khác biệt vỏ (ví dụ "A" vs "a")
  • không có cách nào để mặc định một sự lựa chọn nhất định sau một khoảng thời gian nhất định

Đối với những lý do này, tôi vẫn thích sử dụng lệnh CHOICE chứ không phải là lệnh SET /P. Để làm điều này, bạn chỉ cần bao gồm CHOICE.COM cùng với tệp lô của bạn. Bạn có thể tải xuống CHOICE.COM từ Microsoft qua Đĩa bổ sung MS-DOS 6.22. Đây là liên kết:

http://support.microsoft.com/kb/117600

+0

Thật không may "choice.com" không hoạt động đối với các hệ thống 64 bit. – Paulius

+2

Tôi tin rằng Windows 7 64 bit bao gồm 'CHOICE.EXE'. Ít nhất, máy của tôi có nó và tôi khá chắc chắn tôi đã không đặt nó ở đó bản thân mình. – aphoria

+0

Bạn là đúng @aphoria, tôi có choice.exe và tôi đã không đặt nó ở đó hoặc là :) – MikeRoger

1

Ví dụ bạn có thể sử dụng này:

SET /P ANSWER=y OR n? 
If "%answer%"=="y" goto yes 
If "%answer%"=="n" goto no 

Thưởng thức!

2

Điều này về cơ bản sẽ bắt chước lựa chọn nào, bạn sẽ cần đặt nó làm chương trình con trong tệp lô của bạn. Tôi cũng thích sự lựa chọn nhưng tôi cần một cái gì đó di động sẽ chạy trên Windows XP.

Sau đó, bạn có thể sửa đổi điều này để chấp nhận "lựa chọn" khác, tuy nhiên điều này sẽ hoạt động như không phân biệt chữ hoa chữ thường và lặp lại lời nhắc cho đến khi người dùng nhập Y, y, N hoặc n.

:yesorno 
set /p choice=%2 
if /i NOT %choice% == n (
    if /i NOT %choice% == y goto yesorno 
) 
set "%~1=%choice%" 
goto :eof 

Sau đó, bạn sẽ gọi chương trình con này qua:

call :yesorno answer "Do you want to continue? [Y/n]: " 

Nó được làm việc rất tốt cho tôi cho đến nay.

-1

CHOICE.COM của Windows Millenium hoạt động tốt cho tôi theo XP SP3. Tuy nhiên, tôi là ngôn ngữ hungarian, nhưng bạn có thể tìm thấy biến thể tiếng Anh ban đầu của nó, ví dụ như tìm kiếm "windows millenium ebd".

http://s000.tinyupload.com/index.php?file_id=57468192666746678653

+0

Tôi đã đặt nó trong C: \ windows để có thể truy cập từ mọi nơi. – BlueWings

+0

Chào mừng bạn đến với SO. Vui lòng cung cấp giải pháp trực tiếp trong câu trả lời của bạn. Ngoài ra, vui lòng đọc: https://stackoverflow.com/help/answering –