“下载”文件夹在哪里?

时间:2019-09-15 18:36:48

标签: windows powershell filepath

我正在Powershell ISE中制作脚本,并且为了防止盗版,脚本的一部分需要找到文件名,如果计算机上存在该文件名,则该脚本将无法工作。这将起作用,因为两次下载文件会给它一点点(1)。

我已经用Google搜索了所有类型的问题,但我只是想找出下载中文件的文件路径。

2 个答案:

答案 0 :(得分:3)

tl; dr

  • 天真 [1] 答案通常并不总是作品:
"$HOME\Downloads"
  • 可靠答案
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path

"$HOME\Downloads"假设有两件事,不必要是真的:

  • 与环境变量$HOMEUSERPROFILE等效的$env:USERPROFILE是用户文档的根目录,并非总是如此,即不是具有漫游配置文件-只有"${env:HOMEDRIVE}${env:HOMEPATH}"能够可靠地反映文档文件夹。

  • 更重要的是,下载文件夹可能是explicitly configured to be in an arbitrary location,与文档位置无关

确定下载文件夹位置的唯一可靠方法是询问系统

PowerShell从PowerShell Core 7.0.0-preview.3开始,没有 PowerShell-native 方式询问系统已知的文件夹位置。

尽管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]由天真表示:一种解决方案,该解决方案是易于理解的使用,但是在 all < / em>情况。

答案 1 :(得分:-1)

嗯... C:/用户/ 您的名字 /下载

此处输入您的计算机名称