windows - "downloads"文件夹在哪里

标签 windows powershell filepath

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

我用谷歌搜索了各种问题,但我真的很想找出下载文件的文件路径。

最佳答案

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}” 可靠地反射(reflect)文档文件夹。

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

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

从 PowerShell Core 7.0.0-preview.3 开始,PowerShell 没有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] 天真 我的意思是:一种解决方案,人们可以理解地想使用它,但在所有 情况。

关于windows - "downloads"文件夹在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947150/

相关文章:

javascript - 如何使用javascript,jquery-ajax更改<input type =‘file’>时获取所选文件的完整路径?

cocoa - NSTask:进程的启动路径是否存在

java - 如何在 Java 中执行 Windows 命令?

windows - Windows 上的 os.path.getsize 在复制时报告完整文件大小

powershell - 抑制 powershell 中的错误并显示自定义错误消息

powershell - Powershell正在从程序参数中删除逗号

c - 如果将已分配的内存块分割成更小的 block ,我还需要担心内存对齐吗?

linux - 可以使用 gnulib 工具获取 netinet/in.h 吗?

PowerShell Get-ChildItem 并跳过

browser - 搜索插件 XML 中是否可以有相对路径? (开放式搜索)