2015-07-02 26 views
0

Я ищу, чтобы создать горячую клавишу на F10, которая при нажатии откроет текстовый файл с именем Notes. Это простая часть, она:Как открыть и сохранить/закрыть файл с помощью powershell

C:\Users\Matt\Notes.txt 

Но я также хочу еще одна печать той же горячей клавиши, чтобы сохранить файл и выйти.

Меня интересует только сценарий, я могу запустить powershell через горячие клавиши.

+0

С чем вы будете редактировать файл? Здесь огромная разница. Скрипт должен будет посмотреть, открыт ли файл, и предпринять соответствующие действия. Или вы можете использовать handle.exe из SysInternals, чтобы узнать, какое приложение открыто для этого файла, но это, вероятно, будет сложнее приспособить, поскольку вам придется каким-то образом писать код для взаимодействия с любым приложением, открытым файлом, и это может сильно различаться. Итак, редактируете ли вы файл с помощью Блокнота? – TheMadTechnician

+0

Да, Блокнот или Возвышенное, если это возможно! – JKK

ответ

1

стреляя редактор от сценария просто:

$proc = Start-Process -FilePath C:\Bin\Notepad++.exe -arg C:\Users\Matt\Notes.txt -PassThru 

хитрее часть выяснить, как сохранить & закрыть файл. Если у редактора есть объектная модель COM, вы можете использовать это, но я сомневаюсь, что ваш редактор - это Word. :-)

Другим общим подходом является использование функциональных возможностей WinForms SendKeys. Однако даже лучший подход заключается в использовании инфраструктуры автоматизации пользовательского интерфейса Windows для управления пользовательским интерфейсом произвольных приложений. Существует даже модуль PowerShell, который обертывает этот API, чтобы упростить его использование в PowerShell. Он называется UIAutomation. Вот пример того, как оно используется:

Start-Process calc -PassThru | Get-UIAWindow | 
    Get-UIAButton -Name [1-3] | Invoke-UIAButtonClick; 

Вы бы заменить $proc для Start-Process calc -PassThru немного выше.

+0

По какой-то причине я получаю, что «система не может найти ошибку, указанную в файле», с указанной выше строкой. Я удалил -arg и использовал -filepath, и он, похоже, работает :) Спасибо! – JKK

+0

В моем примере выше, блокнот ++. Exe должен быть на вашем пути. Поэтому, вероятно, лучше указать полный путь к exe. –

Смежные вопросы