我正在Powershell ISE中制作脚本,并且为了防止盗版,脚本的一部分需要找到文件名,如果计算机上存在该文件名,则该脚本将无法工作。这将起作用,因为两次下载文件会给它一点点(1)。
我已经用Google搜索了所有类型的问题,但我只是想找出下载中文件的文件路径。
答案 0 :(得分:3)
tl; dr
"$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从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:/用户/ 您的名字 /下载
在此处输入您的计算机名称