7

Я написал пакетный файл, который планирую распространить на несколько десятков машин. Он автоматически проверяет рабочее состояние нескольких устройств. Недавно я добавил "меню" в начале скрипта, предлагая пользователю выбрать конкретные элементы для запроса из списка. Список, однако, слишком длинный, чтобы видеть без прокрутки.

Вместо того, чтобы улучшать мой список, что я могу добавить в пакет, чтобы максимально увеличить оболочку Windows? Я попытался обмануть и Right click the .bat -> Properties -> Change the "Run" state to "Maximized" , но этот параметр не существует (и, честно говоря, я бы предпочел добавить эту функцию в сам скрипт).

Машины, на которых выполняется скрипт, работают под управлением Windows 7

3 ответа3

14

Вы можете попробовать start /MAX yourscript.bat чтобы запустить ваш скрипт в развернутом cmd (до Windows 7)

Редактировать (Рик):

Я создал небольшой пример, который показывает, как вы можете сделать все это в одном пакетном файле
(без отдельного лаунчера):

@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b

:: here comes the rest of your batch-file
echo "test"

pause

Перед запуском развернутой версии будет небольшое мерцание оригинального пакетного файла (который немедленно выйдет).


Простое объяснение:
Если пакет не вызывается с параметром max мы снова вызываем себя (%0), это время максимизируется с помощью start /max , и с параметром max и, таким образом, при втором вызове он пропускает оператор if и продолжайте с вашими командами.

Сломать:

  • if not "%1" == "max" выполняйте следующую команду, только если %1 не "max". %1 обозначает первый параметр, данный пакетному файлу. Таким образом, my_batch.bat max будет иметь значение max в %1 -переменной. Если мы не запустили пакет с параметром max нам нужно выполнить эту строку.
  • start /MAX запустить команду после нее в развернутом виде.
  • cmd /c выполняет cmd.exe и /c означает выход после этого.
  • %0 max . %0 обозначает ваше собственное имя пакетного файла, а здесь max - его первый параметр. Это означает, что нам нужно пропустить первую строку if иначе мы попадем в цикл :)
  • & exit/b : & означает выполнение следующей команды одновременно с предыдущей. Это означает, что мы выполнили start /max your batchfile и тем временем завершили текущий пакет.

Это также означает, что мы не можем вызвать эту версию с другими параметрами, кроме max . Если вашим пакетным файлам нужен параметр для запуска, вам понадобится еще немного волшебства (например, shift % 1 после тестирования).
Если это так, дайте нам знать.

0

Вы можете развернуть командную строку во время выполнения, но вам понадобятся два дополнительных сценария: windowMode и getCmdPid.bat:

@echo off

call getCmdPid
call windowMode -pid %errorlevel% -mode maximized

some commands
-1

Вы можете попробовать mode.com, но только в полноэкранном режиме он не позиционирует окно:

@echo off
mode 1000

А затем введите код для вашего командного файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .