Как открыть окно консоли командного файла в определенном месте экрана

Я хочу открыть окно консоли моего пакетного файла в определенном месте на экране. Я искал в Google, но не нашел решения для этого. Мне нужно четыре маленьких окна консоли, по одному в каждом углу экрана.


person VyTcdc    schedule 01.11.2018    source источник
comment
Возможно, это Установить положение окна приложения через командную строку   -  person Squashman    schedule 02.11.2018
comment
я проверю спасибо   -  person VyTcdc    schedule 02.11.2018
comment
Я не могу найти решение, пожалуйста, помогите мне, относительно этого   -  person VyTcdc    schedule 02.11.2018


Ответы (1)


@echo off
setlocal

if /i "%~1" == "/4way" (
    console4way "%~f0" %*
    exit /b
)

echo Running %*

консоль4way

#pragma compile(Out, console4way.exe)

Global $aPid[4]

; Run ComSpec (usually set as CMD) with arguments for the 1st instance.
$aPid[0] = Run('"' & @ComSpec & '" /k ' & StringReplace($CMDLINERAW, '/4way', '', 1))

For $i1 = 1 To 3
    $aPid[$i1] = Run('"' & @ComSpec & '"')
Next

; Give time for all windows to display.
Sleep(500)

; Get list of all console class windows.
$aWinList = WinList('[CLASS:ConsoleWindowClass]')

For $i1 = 1 To UBound($aWinList) -1
    ; Get current window handle from the list.
    $hWindow = $aWinList[$i1][1]

    ; Get position and sizes of current window.
    $aPos = WinGetPos($hWindow)

    ; Move windows if process id matches.
    Switch WinGetProcess($hWindow)
        Case $aPid[0]
            WinMove($hWindow, '', 0, 0)
        Case $aPid[1]
            WinMove($hWindow, '', @DesktopWidth - $aPos[2], 0)
        Case $aPid[2]
            WinMove($hWindow, '', 0, @DesktopHeight - $aPos[3])
        Case $aPid[3]
            WinMove($hWindow, '', @DesktopWidth - $aPos[2], @DesktopHeight - $aPos[3])
    EndSwitch
Next

Один пакетный файл кажется неспособным выполнить эту задачу без внешней помощи.

Вам может понадобиться что-то, что может обрабатывать 4 окна своими ручками и перемещать их в нужное положение. Возможно, потребуется распознать 4 окна по идентификатору процесса, чтобы обеспечить обработку правильных окон.

Код console4way — AutoIt3.

Пакетный файл, если он выполняется с /4way в качестве 1-го аргумента, выполнит console4way.exe. Выполнятся 4 консольных процесса, и произойдет короткий сон, чтобы окна появились. WinList получит окна консоли по классам. Каждый дескриптор окна используется для получения позиции, размера и идентификатора процесса. По мере сопоставления каждого идентификатора процесса текущее окно перемещается в указанное положение в углу рабочего стола.

Ширина и высота окон не уточняется. WinMove допускает еще 2 параметра для ширины и высоты. $aPos[2] и $aPos[3] — это ширина и высота текущего окна консоли.

Выполните пакетный файл с аргументом /4way, чтобы инициировать пакетный файл для выполнения console4way, иначе он будет выполняться без console4way. Вы можете добавить дополнительные аргументы после аргумента /4way, если хотите передать аргументы в пакетный файл для использования.

Скомпилируйте console4way.au3 в исполняемый файл, соответствующий разрядности ОС, чтобы он выполнял ComSpec той же среды.


О console4way

console4way — это команда для выполнения console4way.exe. Вы можете назвать свой сценарий au3 console4way.au3 (это текстовый файл, содержащий приведенный выше код). Используйте файл сценария au3 для компиляции console4way.exe с предоставленными инструкциями.

После компиляции вам нужно только, чтобы пакетный файл и console4way.exe находились по одному и тому же пути, и выполните пакетный файл для тестирования. Вы можете сохранить скрипт au3 и использовать его позже, если захотите снова скомпилировать или обновить код.


Инструкции по компиляции console4way.au3:

с установщиком:

  1. Загрузите AutoIt3 и установите.
  2. Щелкните правой кнопкой мыши на console4way.au3 и выберите Compile Script (x64) для 64-битной ОС или Compile Script (x86) для 32-битной ОС.
  3. В том же каталоге у вас теперь должен быть файл console4way.exe.

или с застежкой-молнией:

  1. Загрузите AutoIt3 и разархивируйте.
  2. Перейдите к install\Aut2Exe и выполните Aut2Exe.exe. Если на 64-битной ОС, вы можете вместо этого выполнить Aut2Exe_x64.exe. Либо будет работать одинаково для компиляции в исполняемый файл x86 или x64.
  3. Исходный ввод — это путь к console4way.au3.
  4. Оставьте ввод Destination пустым, чтобы он компилировался в тот же каталог, что и скрипт. Должен быть выбран переключатель .exe.
  5. Установите флажок Компилировать для системы x64 для 64-битной компиляции.
  6. Нажмите кнопку Convert для компиляции.
  7. В том же каталоге у вас теперь должен быть файл console4way.exe.

console4way.exe будет автономным исполняемым файлом, который можно запустить в ОС без установленного AutoIt.

Дополнительно:

Просмотрите справочную страницу о компиляции скриптов с помощью Aut2Exe.

person michael_heath    schedule 02.11.2018
comment
Спасибо, Майкл за ваш ответ, но все же я немного запутался с реализацией кода, не могли бы вы объяснить, как реализовать этот код, я имею в виду, что console4way - это отдельный файл, что такое console4way.exe. Пожалуйста, расскажите мне о том, как реализовать ваш код . - person VyTcdc; 03.11.2018
comment
Я добавил раздел О console4way и Инструкции по компиляции, чтобы решить ваши проблемы, упомянутые в вашем комментарии. - person michael_heath; 03.11.2018