【问题标题】:Do Wscript.Shell shortcuts support file extensions longer than 3 charactersWscript.Shell 快捷方式是否支持超过 3 个字符的文件扩展名
【发布时间】:2017-06-14 20:50:31
【问题描述】:

我正在尝试使用 Wscript.Shell 在 Powershell 脚本中创建桌面快捷方式。目标路径是网络驱动器上的 HTML 文件。我指定了完整路径,但是在创建快捷方式时,文件扩展名被截断为 .htm。由于文件以 .html 结尾,这显然是行不通的。

有什么办法可以避免截断文件名?我的猜测是 Wscript.Shell 不支持超过 3 个字符的目标文件扩展名。这是正确的吗?

这是我的代码(Powershell):

$wshell = New-Object -ComObject WScript.Shell
$shortcut = $wshell.CreateShortcut("C:\users\parts.AGRISERVICELLC\Desktop\AgriWeb.lnk")
$shortcut.TargetPath = "S:\Service\agriweb_dairy\home.html"
$shortcut.WorkingDirectory = "S:\Service\agriweb_dairy"
$shortcut.IconLocation = "C:\arch2.ico"
$shortcut.Save()

此代码创建快捷方式,并带有我的图标。但是目标路径被截断为S:\Service\agriweb_dairy\home.htm

更新:有趣的是,如果我在本地 Powershell 会话中运行上述命令,则不会出现此问题。但是,如果我使用 Enter-PSSession 远程访问另一台计算机,则扩展名将截断为 3 个字符。问题不在于路径的长度——如果我缩短路径并将扩展名更改为“.htmll”,它仍然会将扩展名缩短为“.htm”。 此外,如果路径位于 C: 驱动器上,则扩展不会截断。但是当我使用网络驱动器时,扩展会被截断。

【问题讨论】:

  • 这里不会发生这种情况。 .html 扩展名仍在链接中。该链接也可以使用。
  • 我尝试了更多,只要我在本地 Powershell 会话中运行命令,它就可以正常工作。当我使用 Enter-PSSession 远程访问另一台计算机时,扩展名再次被截断为 3 个字符。
  • 我可以确认问题:powershell "$shortcut=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\test.lnk');$shortcut.TargetPath='Z:\test.docx';$shortcut.Save(); Write-Host $shortcut.TargetPath" 将扩展截断为Z:\test.doc。但是powershell "$shortcut=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\test.lnk');$shortcut.TargetPath='C:\test.docx';$shortcut.Save(); Write-Host $shortcut.TargetPath" 工作正常:C:\test.docx。之前两个命令行的唯一区别是卷号c: vs.z:

标签: powershell vbscript shortcut


【解决方案1】:

也许这与https://web.archive.org/web/20060709170134/https://support.microsoft.com/?kbid=263324有关 如果创建快捷方式的机器上不存在目标驱动器号,Windows 会假定驱动器只能处理 8.3 格式的文件名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多