Ale*_*eks 6 windows powershell filepath
我正在 Powershell ISE 中制作一个脚本,为了防止盗版,脚本的一部分需要定位文件名,如果它存在于计算机上,脚本将无法工作。这会起作用,因为下载一个文件两次会给它一点点 (1)。
我已经用谷歌搜索了各种问题,但我真的很想弄清楚位于下载中的文件的文件路径。
mkl*_*nt0 17
tl;博士
"$HOME\Downloads"
Run Code Online (Sandbox Code Playgroud)
(New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path
Run Code Online (Sandbox Code Playgroud)
"$HOME\Downloads"假设两件事,这不一定是真的:
也就是说$HOME,这相当于环境变量USERPROFILE($env:USERPROFILE),是为用户的根目录下的文件并不总是正确的,即不与漫游配置文件-只有"${env:HOMEDRIVE}${env:HOMEPATH}"真实地反映出该文件夹。
更重要的是,下载文件夹可能已被明确配置为位于任意位置,与文档位置无关
确定下载文件夹位置的唯一可靠方法是向系统询问:
从 PowerShell Core 7.0.0-preview.3 开始,PowerShell没有向系统询问已知文件夹位置的PowerShell 原生方式。
虽然 PowerShell 几乎可以无限制地访问 .NET 框架,因此可以使用System.Environment类型的.GetFolderPath()方法来请求特殊的已知文件夹,但令人惊讶的是,指定的下载文件夹不在其中。
只有 WinAPI 的已知文件夹 API允许以稳健的方式检索指定的下载文件夹,而无需依赖与其他已知文件夹的固定关系:
在 PowerShell 中,您可以通过Shell.ApplicationCOM 服务器访问它:
"$HOME\Downloads"
Run Code Online (Sandbox Code Playgroud)
有关所有受支持(-shell:前缀)文件夹标识符的列表,请参阅此文章。
[1]天真的我的意思是:可以理解地想要使用一种解决方案,但它并不适用于所有情况。
小智 -13
嗯... C:/Users/你的名字/Downloads
在此输入您注册计算机时使用的名称作为您的姓名
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |