"downloads" 文件夹位于何处
Where is the "downloads" folder located
我正在 Powershell ISE 中制作脚本,为了防止盗版,脚本的一部分需要定位文件名,如果它存在于计算机上,脚本将无法运行。这将起作用,因为下载文件两次会给它一点点 (1)。
我有 google 各种各样的问题,但我真的很想弄清楚下载文件的文件路径。
嗯... C:/Users/你的名字在这里/Downloads
在此处输入您注册计算机时使用的名称您的姓名
tl;dr
- 天真[1]答案,通常 但 并不总是 有效:
"$HOME\Downloads"
- 可靠的答案:
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path
"$HOME\Downloads"
假设两件事,不一定 正确:
那个$HOME
,相当于环境变量USERPROFILE
($env:USERPROFILE
),是用户文档的根目录 并不总是正确的,即不适用于 漫游配置文件 - 只有 "${env:HOMEDRIVE}${env:HOMEPATH}"
可靠地反映了文档文件夹。
更重要的是,下载文件夹可能 explicitly configured to be in an arbitrary location,与文档位置无关
确定下载文件夹位置的唯一可靠方法是询问系统:
从 PowerShell Core 7.0.0-preview.3 开始,PowerShell 没有 PowerShell-native 询问系统已知文件夹位置的方法。
- 不过,添加这样的功能已经 proposed on GitHub。
虽然 PowerShell 几乎可以无限制地访问 .NET 框架,因此可以使用 System.Environment
类型的 .GetFolderPath()
方法来请求特殊的已知文件夹,但令人惊讶的是,指定的下载文件夹不是其中。
只有 WinAPI 的 Known Folders API 允许以稳健的方式检索指定的下载文件夹,而不依赖于与其他已知文件夹的固定关系:
在 PowerShell 中,您可以通过 Shell.Application
COM 服务器访问它:
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path
有关所有受支持(shell:
前缀)文件夹标识符的列表,请参阅 this article。
[1] 天真 我的意思是:一个解决方案可以理解地想使用,但是在 所有 情况下都不起作用。
我正在 Powershell ISE 中制作脚本,为了防止盗版,脚本的一部分需要定位文件名,如果它存在于计算机上,脚本将无法运行。这将起作用,因为下载文件两次会给它一点点 (1)。
我有 google 各种各样的问题,但我真的很想弄清楚下载文件的文件路径。
嗯... C:/Users/你的名字在这里/Downloads
在此处输入您注册计算机时使用的名称您的姓名
tl;dr
- 天真[1]答案,通常 但 并不总是 有效:
"$HOME\Downloads"
- 可靠的答案:
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path
"$HOME\Downloads"
假设两件事,不一定 正确:
那个
$HOME
,相当于环境变量USERPROFILE
($env:USERPROFILE
),是用户文档的根目录 并不总是正确的,即不适用于 漫游配置文件 - 只有"${env:HOMEDRIVE}${env:HOMEPATH}"
可靠地反映了文档文件夹。更重要的是,下载文件夹可能 explicitly configured to be in an arbitrary location,与文档位置无关
确定下载文件夹位置的唯一可靠方法是询问系统:
从 PowerShell Core 7.0.0-preview.3 开始,PowerShell 没有 PowerShell-native 询问系统已知文件夹位置的方法。
- 不过,添加这样的功能已经 proposed on GitHub。
虽然 PowerShell 几乎可以无限制地访问 .NET 框架,因此可以使用 System.Environment
类型的 .GetFolderPath()
方法来请求特殊的已知文件夹,但令人惊讶的是,指定的下载文件夹不是其中。
只有 WinAPI 的 Known Folders API 允许以稳健的方式检索指定的下载文件夹,而不依赖于与其他已知文件夹的固定关系:
在 PowerShell 中,您可以通过 Shell.Application
COM 服务器访问它:
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path
有关所有受支持(shell:
前缀)文件夹标识符的列表,请参阅 this article。
[1] 天真 我的意思是:一个解决方案可以理解地想使用,但是在 所有 情况下都不起作用。