4

Я хотел бы запустить диалог Выполнить ... (Win+R) из пакетной команды? В C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools снимок, но этот снимок не идет никуда, цель просто «Выполнить ...», а целевой каталог - мой рабочий стол.

Как я могу запустить диалог из команды?

5 ответов5

6

Эта команда может быть запущена из любой программы / скрипта, чтобы показать диалог "Выполнить":

explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
6

Vista или позже

Если вы используете Windows Vista или более позднюю версию, она будет поставляться с PowerShell. Оболочка PowerShell (New-Object -ComObject).Заявка").FileRun() будет работать.

Вы можете запустить это непосредственно из устаревшей командной строки (или в пакетном файле) с помощью следующего:

powershell -c (New-Object -ComObject "Shell.Application").FileRun()

Это адаптация команды VBScript, описанной ниже.


Pre-Виста

Для более старых версий Windows (это также будет работать в более новых версиях, но требует дополнительного файла), вы можете сделать это через VBScript, используя объект Shell:

dim oShell = CreateObject("shell.application")
oShell.FileRun()

Сокращение в одну строку:

CreateObject("shell.application").FileRun()

Просто поместите эту строку в собственный текстовый файл и сохраните его с расширением .vbs , например ShowRunDialog.vbs . Затем запустите ShowRunDialog.vbs из командной строки.

Это косвенно запускает функцию RunFileDlg содержащуюся в shell32.dll . Смотрите здесь .

2

Ниже работает для моей 32-битной Windows:

c:\WINDOWS\system32\rundll32.exe shell32.dll,#61

Кто-нибудь знает 64-битную версию?

2

Я всего лишь программист-любитель, но мне кажется, что было бы короче и эффективнее поместить команду для чего угодно в командный файл, а не рискованную процедуру вызова диалогового окна «Выполнить».

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

1

Самый ленивый способ - использовать AutoHotKey для буквальной отправки команды Win+R в операционную систему:

SendInput, {LWin down}r{LWin up}

Я пошел дальше и загрузил ZIP, содержащий скрипт AutoHotKey и скомпилированный .exe сценария. Я извиняюсь, если есть "лучший" способ справиться с этим; как только я нахожу способ, который работает, я перехожу к следующей вещи!

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