Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 将位置更改为快捷方式位置_Windows_Powershell_Desktop Shortcut - Fatal编程技术网

Windows 将位置更改为快捷方式位置

Windows 将位置更改为快捷方式位置,windows,powershell,desktop-shortcut,Windows,Powershell,Desktop Shortcut,我正在使用powershell快捷方式(C:\Windows….\powershell.exe-文件“D:\powershell\script.ps1”)启动脚本 有没有办法让脚本将其当前位置更改为所述快捷方式的位置 示例:脚本本身位于D:\powershell\中,快捷方式位于C:\Work\Project1中。我需要脚本cd到“C:\Work\Project1\” 谢谢提供了一个有效的解决方案,前提是从桌面或文件资源管理器打开快捷方式文件 此答案提供背景信息 您必须将所需的工作目录配置为快

我正在使用powershell快捷方式(C:\Windows….\powershell.exe-文件“D:\powershell\script.ps1”)启动脚本

有没有办法让脚本将其当前位置更改为所述快捷方式的位置

示例:脚本本身位于D:\powershell\中,快捷方式位于C:\Work\Project1中。我需要脚本cd到“C:\Work\Project1\”

谢谢

提供了一个有效的解决方案,前提是从桌面或文件资源管理器打开快捷方式文件

此答案提供背景信息


您必须将所需的工作目录配置为快捷方式文件的一部分,因为您调用的脚本对调用它的快捷方式一无所知

因此,要配置特定的工作目录(例如,
C:\Work\Project1
),请在
起始位置:
字段的快捷方式文件属性对话框中指定它

如果要以编程方式更新快捷方式文件(
*.lnk
)的工作目录,请使用中的技术和
.WorkingDirectory
属性

注意:在这两种情况下,只能将绝对路径配置为工作目录:文件资源管理器仅允许您输入绝对路径,而编程方法允许您分配相对路径,但它会立即解析为绝对路径,相对于快捷方式的位置

若要将快捷方式自己的目录设置为工作目录,您可以清空
起始位置:
字段/
。工作目录
属性,但请注意限制

  • 仅当从桌面或文件资源管理器打开此类快捷方式时才起作用

  • 相反,从任务栏或(仅限Windows 10之前版本)开始菜单打开它,工作目录是
    $env:windir\System32
    (通常是
    C:\Windows\System32


如果快捷方式以应用程序(而不是文档)为目标,如本例所示,则快捷方式调用的应用程序(包括
cmd.exe
powershell.exe
)将在配置的/隐含的工作目录中启动。


警告re
cmd.exe
:如果将工作目录指定为UNC路径,
cmd.exe
将无法更改为该目录;作为一种解决方法,请改用带有映射驱动器的路径(但显然,该驱动器必须在快捷方式打开时映射)。

您可以使用set-location cmdlet使用快捷方式的TargetPath属性(可能执行get-childitem$psscriptroot,其中名称类似于scriptname,扩展名类似于.lnk)


您可以创建一个快捷方式,从它所在的任何目录开始。您所要做的就是修改快捷方式的“开始于”属性,并将其清空。这是正确的。把它设为零


然后,当您想要调用快捷方式时,在调用它之前导航到它所在的文件夹(目录)。我将此技术用于启动powershell但不启动脚本的快捷方式。我没有使用启动脚本的快捷方式对其进行测试。

TargetPath属性指定要运行的可执行文件(或要打开的文档);在OP的例子中,它是
powershell.exe
,因此您的建议与OP希望将快捷方式调用的
*.ps1
脚本运行在与快捷方式本身相同的目录中的愿望无关。我有点晚了(抱歉),但我将在这里进入讨论:我在我们的NAS上有一个脚本,它从某处提取数据,处理它们并导出excel文件。我创建了一个快捷方式文件来为我们的非it人员运行它,所以他们只需要复制快捷方式。我希望生成的文件保存在与他们复制的快捷方式相同的位置-如果此人将快捷方式放在D:\Work\Project1中,那么我希望生成的excel文件也保存在那里。我的答案与您相关,但需要一些解释。如果您将快捷方式的Starts In属性留空,则该快捷方式调用的进程将继承当前文件夹或目录。如果用户在运行快捷方式之前打开了containng文件夹,则containng文件夹将变为当前文件夹。然后会被继承。@Jlisk:re-Walter的解决方案唯一需要注意的是,用户必须从桌面或通过文件资源管理器打开快捷方式-从任务栏或“开始”菜单无法打开快捷方式。谢谢您的更新。还有一个警告。我没有想到从任务栏打开。@Jlisk:不,相对路径不可能-请查看我的更新-但即使它们也不能解决您的问题-Walter的答案是正确的。