-1

Я попытался найти пример того, как сделать это безуспешно, в том числе с autohotkey (я очень нуб с AHK). То, что я пытаюсь сделать, это открыть командное окно в расположении обозревателя, в котором я нахожусь, запустить пакетную программу, которая находится в местоположении, в котором выполняется поиск по переменной среды "path", а затем закрыть командное окно. Что я пробовал в AHK:

LWin & Return::

if WinActive("ahk_class CabinetWClass")

or WinActive("ahk_class ExploreWClass")

{

  Send {Shift Down}{AppsKey}{Shift Up}

  Sleep 10

  Send w{enter}

  Sleep 10

  run fp.bat

  Sleep 10

Send,{LAlt Down}{Space Down}{Space Up}{LAlt Up}{c Down}

}

else

{

  run, cmd, C:\

}

return

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

Я использую Windows 10 Pro

Я довольно близок к тому, что я пытаюсь выполнить с помощью сценария AHK, который я включил выше. И то, что я пытаюсь сделать с этим, - это чтобы комбинация KB "Windows Key" и "Return Key" открыла командное окно в текущем месте проводника, где я работаю в окне GUI Explorer, запустила определенный пакет файл там (в моем случае fp.bat), а затем закройте ранее открытое командное окно, возвращая меня в окно графического интерфейса Explorer, где я начал.

Что происходит с моим AHK-сценарием, так это то, что командное окно открывается успешно, но когда запускается командный файл, он не запускается в открытом командном окне, а работает так, как будто я только что запустился из поля поиска / запуска (я я вижу, как быстро и закрывается другое окно, и затем окно обозревателя закрывается, а не командное окно - оставляя меня с открытым командным окном в правильном месте, но в котором не запускался командный файл. Как будто я теряю фокус из окна команд и окна проводника, когда выполняются 2-й и 3-й этапы (запустите пакетный файл, а затем закройте открытое командное окно).

Может быть, то, что я пытаюсь сделать, просто не может быть сделано ...

2 ответа2

0

Возможно, интегрируйте ваше решение с бесплатным CMDOW с открытым исходным кодом. Я часто использую это в своей автоматизации командной строки:

http://www.commandline.co.uk/cmdow/

Вы можете закрыть окна с помощью /CLS и /END, например, следующее содержимое пакетного файла:

(Fp.bat)

TITLE Automation ID 123456
...

(еще один пакетный файл, закрывающий fp.bat)

CMDOW.EXE "*Automation ID 123456*" /END

Я предполагаю, что fp.bat не завершается изящно, поэтому принудительное завершение.

0

Учитывая ваше обновление, почему бы не отправить ключи для запуска вашего пакетного файла непосредственно в командную строку?

if WinActive("ahk_class CabinetWClass") or WinActive("ahk_class ExploreWClass")
{
  Send {Shift Down}{AppsKey}{Shift Up}
  Sleep 10
  Send w
  Sleep 10
  WinWaitActive, ahk_exe cmd.exe
  Sleep 10
  Send fp.bat{Enter}
  ...

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