Полезный ответ Уолтера Митти предоставляет эффективное решение, при условии, что файл ярлыка открывается из рабочего стола или Проводника .
Этот ответ содержит справочную информацию .
Вы должны настроить требуемый рабочий каталог как часть файла ярлыка , поскольку вызываемый вами скрипт ничего не знает о ярлыке, который его вызвал.
Следовательно, для необходимо настроить определенный рабочий каталог (например, C:\Work\Project1
), укажите его в диалоговом окне «Свойства» файла ярлыка в поле Start in:
.
Если вы хотите обновить рабочий каталог файла ярлыка (*.lnk
) программным способом , используйте методикуиз этот ответ со свойством .WorkingDirectory
.
Примечание. В обоих случаях в качестве рабочего каталога можно настроить только абсолютный путь : File Explorer позволяет только ввестиbsolute path в любом случае, и хотя программный метод позволяет назначить относительный путь, он мгновенно разрешается до абсолютного относительно местоположения ярлыка.
Чтобы сделать ярлык собственного каталога рабочим каталогом , вы можете очистить свойство Start in:
field / .WorkingDirectory
, но учтите ограничения :
Работает только только когда такой ярлык либо открывается из рабочего стола или из файлаExplorer .
В отличие от этого, открыв его из панели задач или (только до Windows 10) Меню Пуск , рабочий каталог $env:windir\System32
(обычно C:\Windows\System32
).
Если ярлык предназначен для приложения (а не документа), как в этом случае,что приложение , вызываемое ярлыком, включая cmd.exe
и powershell.exe
, запускается в настроенном / подразумеваемом рабочем каталоге.
Предупреждение cmd.exe
: если рабочий каталог указан как UNC-путь , cmd.exe
не сможет изменить его накаталог;в качестве обходного пути используйте вместо этого путь с подключенным диском (но, очевидно, этот диск должен быть сопоставлен в момент открытия ярлыка).