В пакетном файле Dos нажмите клавишу ВВОДА, чтобы открыть программу, или нажмите любую другую клавишу, чтобы выйти из программы. - PullRequest
1 голос
/ 27 ноября 2010

У меня есть командный файл DOS, который показывает некоторые результаты на консоли cmd. Я хочу, чтобы пользователи нажимали Enter, чтобы запустить программу, или нажмите любую другую клавишу на клавиатуре, чтобы выйти.

Я не хочу использовать опции / варианты, потому что в этом случае пользователь должен будет ввести хотя бы то, что мне нужно проверить, и установить действие.

Пример: В конце консоли CMD что-то сказать, как это Нажмите клавишу ВВОД, чтобы открыть abc.exe, или нажмите любую клавишу на клавиатуре, чтобы выйти!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 ноября 2010

Примерно так

@ECHO OFF
SET Choice=
SET /P Choice=Press enter to open abc.exe (and something else to quit)
IF "%Choice%"=="" GOTO Start
GOTO End
:Start
echo abc.exe about to start
abc.exe
:End

РЕДАКТИРОВАТЬ: Если вы хотите просто «любую клавишу» без нажатия клавиши Enter, то это невозможно с помощью языка сценариев DOS, но вы можете написать небольшую утилиту exe, которая сделает это дляВы.

Вот как это выглядит:

C:\Users\hol>test
Press enter to open abc.exe (and something else to quit)

Если вы нажмете "enter", то получим:

C:\Users\hol>test2
Press enter to open abc.exe (and something else to quit)
abc.exe about to start
'abc.exe' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\hol>

У меня нет abc.exe, поэтомуэто сообщение об ошибкеИ наоборот:

C:\Users\hol>test2
Press enter to open abc.exe (and something else to quit)x

дает

C:\Users\hol>test2
Press enter to open abc.exe (and something else to quit)x

C:\Users\hol>

По существу, установить / p попросить пользователя указать значение «Выбор», когда он просто вводится, тогда это пустая строка имы можем начать иначе мы закончим.Измените его по своему вкусу.

1 голос
/ 22 декабря 2010

Пакетный файл ниже будет делать именно то, что вы хотите:

   @rem ========================================
   @rem GETKEY.BAT - Written by Paul Tomasi 2010
   @rem
   @rem Waits for keypress. Returns key value
   @rem ========================================
   @echo off
      set /p .=Press ENTER to open abc.exe (and something else to quit): <nul
      call :getkey
      if %errorlevel% equ 13 start /b /wait abc.exe
   exit /b


   ::---------------------------
   :: GETKEY
   ::---------------------------
   :getkey
      (
         echo a
         echo mov ah, 08
         echo int 21
         echo mov ah, 4c
         echo int 21
         echo.
         echo rcx
         echo 08
         echo n getkey.com
         echo w
         echo q
      )>script
      debug<script>nul
      call getkey.com
   goto :eof

Если ваша версия DOS не поддерживает опцию 'SET / P' (используется только для подавления падения курсора на следующую строку), просто замените эту строку на оператор ECHO.

Вы можете опустить '/ wait', если хотите перейти прямо к вашему пакетному файлу.

...