将位置更改为快捷方式位置
Change location to shortcut location
我正在使用 powershell 快捷方式启动脚本 (C:\Windows...\powershell.exe -file 'D:\powershell\script.ps1')。
有没有办法让脚本将其当前位置更改为所述快捷方式的位置?
示例:脚本本身在 D:\powershell\ 中,快捷方式在 C:\Work\Project1 中。我需要将脚本 cd 到 "C:\Work\Project1\".
谢谢
提供了一个有效的解决方案,前提是快捷方式文件是从桌面或文件资源管理器.
此回答提供了背景信息。
您必须将所需的工作目录配置为快捷方式文件的一部分,因为您调用的脚本对快捷方式一无所知调用了它。
因此,要配置一个特定的工作目录(例如,C:\Work\Project1
),在快捷方式文件的属性中指定它Start in:
字段中的对话框。
如果您想以编程方式更新快捷方式文件的 (*.lnk
) 工作目录,请使用 this answer 中的技术和 .WorkingDirectory
属性.
注意:在这两种情况下,只能将绝对路径配置为工作目录:文件资源管理器只允许您输入绝对路径,虽然编程方法允许您 分配 相对路径,但它 立即解析为绝对路径 ,相对于快捷方式的位置。
要将快捷方式的自己的目录设为工作目录,您可以删除 Start in:
字段 / .WorkingDirectory
属性,但请注意 限制 :
仅当这样的快捷方式从 桌面 或从 打开时才有效 文件资源管理器.
相比之下,从任务栏或(仅限Windows 10之前)开始菜单,工作目录是$env:windir\System32
(通常是C:\Windows\System32
)。
如果快捷方式以应用程序(而不是文档)为目标,如本例,则快捷方式调用的 应用程序 - 包括 cmd.exe
和 powershell.exe
- 开始于配置/隐含的工作目录。
警告 cmd.exe
:如果工作目录指定为 UNC 路径,cmd.exe
将无法更改到该目录;作为解决方法,使用带有 映射驱动器 的路径(但是,显然,在打开快捷方式时必须映射该驱动器)。
您可以使用快捷方式的 TargetPath 属性(可以使用 get-childitem $psscriptroot,其中名称类似于脚本名,扩展名类似于 .lnk)和 set-location cmdlet
您可以创建一个快捷方式,从它所在的任何目录开始。您所要做的就是修改快捷方式的"Starts In" 属性,并将其清空。那就对了。将其设置为空。
然后,当您要调用快捷方式时,请导航到它所在的文件夹(目录),然后再调用它。我将此技术用于启动 powershell 但不启动脚本的快捷方式。我还没有使用启动脚本的快捷方式对其进行测试。
我正在使用 powershell 快捷方式启动脚本 (C:\Windows...\powershell.exe -file 'D:\powershell\script.ps1')。
有没有办法让脚本将其当前位置更改为所述快捷方式的位置?
示例:脚本本身在 D:\powershell\ 中,快捷方式在 C:\Work\Project1 中。我需要将脚本 cd 到 "C:\Work\Project1\".
谢谢
此回答提供了背景信息。
您必须将所需的工作目录配置为快捷方式文件的一部分,因为您调用的脚本对快捷方式一无所知调用了它。
因此,要配置一个特定的工作目录(例如,C:\Work\Project1
),在快捷方式文件的属性中指定它Start in:
字段中的对话框。
如果您想以编程方式更新快捷方式文件的 (*.lnk
) 工作目录,请使用 this answer 中的技术和 .WorkingDirectory
属性.
注意:在这两种情况下,只能将绝对路径配置为工作目录:文件资源管理器只允许您输入绝对路径,虽然编程方法允许您 分配 相对路径,但它 立即解析为绝对路径 ,相对于快捷方式的位置。
要将快捷方式的自己的目录设为工作目录,您可以删除 Start in:
字段 / .WorkingDirectory
属性,但请注意 限制 :
仅当这样的快捷方式从 桌面 或从 打开时才有效 文件资源管理器.
相比之下,从任务栏或(仅限Windows 10之前)开始菜单,工作目录是
$env:windir\System32
(通常是C:\Windows\System32
)。
如果快捷方式以应用程序(而不是文档)为目标,如本例,则快捷方式调用的 应用程序 - 包括 cmd.exe
和 powershell.exe
- 开始于配置/隐含的工作目录。
警告 cmd.exe
:如果工作目录指定为 UNC 路径,cmd.exe
将无法更改到该目录;作为解决方法,使用带有 映射驱动器 的路径(但是,显然,在打开快捷方式时必须映射该驱动器)。
您可以使用快捷方式的 TargetPath 属性(可以使用 get-childitem $psscriptroot,其中名称类似于脚本名,扩展名类似于 .lnk)和 set-location cmdlet
您可以创建一个快捷方式,从它所在的任何目录开始。您所要做的就是修改快捷方式的"Starts In" 属性,并将其清空。那就对了。将其设置为空。
然后,当您要调用快捷方式时,请导航到它所在的文件夹(目录),然后再调用它。我将此技术用于启动 powershell 但不启动脚本的快捷方式。我还没有使用启动脚本的快捷方式对其进行测试。