Edit2
Это может представлять интерес в отношении того, что вы делаете (в отличие от того, почему что-то работает так, как работает).
Из предыдущего ответа
Можно ли создать сокращенные имена для использования внутри cmd?
См. Doskey /?
.
Вы можете сделать это doskey cddesk=cd "%userprofile%\desktop"
Затем введите cddesk
.
Поместив все свои макросы в пакетный файл, вы можете загрузить авто.Конечно, вы можете сделать это и с пакетными файлами.
Из Технического справочника по реестру Windows 2000, Microsoft, 2000.
AutoRun HKCU\Software\Microsoft\Command Processor
Тип данных Диапазон Значение по умолчанию
REG_SZ список команд Для этой записи нет значения по умолчанию.
Описание
Содержит команды, которые выполняются при каждом запуске Cmd.exe.
Также смотрите этот пакетный файл https://pastebin.com/A2qLw8r3, в котором перечислены специальные имена.
В командной строке start shell:desktop
Или в Пуск - Выполнить (Winkey + R) просто shell:desktop
Редактировать
Я просто добавлю несколько предостережений здесь.
Это касается открытия исполняемых файлов с помощью команды Start
.Огромное количество правил применяется к неисполняемым файлам.
Не используется Start
CMD предварительно обрабатывает командную строку и отправляет FQFN на CreateProcess
- так что CMD ищет путь не CreateProcess
.
https://docs.microsoft.com/en-us/windows/desktop/shell/launch - документация для ShellExecute.Все заканчивается вызовом CreateProcess https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessw. Plus Предварительная обработка CMD подробно описана здесь https://books.google.com.au/books/about/Windows_NT_Shell_Scripting.html?id=jrdQAAAAMAAJ&redir_esc=y. Также start /?
предоставляет документацию для всех трех способов запуска файлов.Сводка здесь Команда для запуска .bat файла
Несколько забавных фактов.CMD, если не может распознать расширение файла, попытается выполнить его.ShellExecute
будет обнюхивать неизвестные файлы https://docs.microsoft.com/en-us/windows/desktop/com/filetype-key.
цитата из rojo: Спасибо за дамп ссылки.Я пытаюсь понять, как ShellExecute
может избавить меня от необходимости полностью определять имена путей.Это был мой основной вопрос. «Чтобы использовать ShellExecute или ShellExecuteEx, ваше приложение должно указать объект файла или папки, который должен быть обработан на , и глагол, определяющий операцию». Это часть «указать объект файла или папки», о которой я спрашиваю.
Он использует 6 шагов в CreateProcess и, если ничего не получается, он использует пути к приложениям,Если глагол не указан, используется глагол по умолчанию (обычно открытый).Смотрите мой ответ здесь Как мне автоматизировать симуляцию щелчка правой кнопкой мыши по файлу и выбора первой опции, используя vbscript .
Итак, это пересечение 4 технологий.Совместимость с MSDos, изменения, сделанные IBM для OS / 2 и обновленные Microsoft для Windows 2000, стандартный способ запуска программ CreateProcess для Windows, а с Windows 95 мы получили функции оболочки, основанные на OLE
цитата из Рохо: Snap!Ты прав!В PowerShell мне удалось создать объект System.Diagnostics.Process
, задать $ps.StartInfo.UseShellExecute = $true
, а затем запустить «wordpad» без расширения файла или полного пути.Установка .UseShellExecute property
в $false
привела к сбою выполнения.Как интересно!