我被指定编写一段 PowerShell 脚本来执行文件下载,最终将作为每周定期任务运行。我没有在 Windows 环境下编程的背景,所以今天很有趣。
我遇到了一个问题,即 shell 的 $pwd 和 $home 处理出乎意料。
我向程序传递一个下载 URL 和目标文件。我希望目标文件是一个相对路径,例如 download/temp.txt.gz。
我遇到了一个问题,即 shell 的 $pwd 和 $home 处理出乎意料。
我向程序传递一个下载 URL 和目标文件。我希望目标文件是一个相对路径,例如 download/temp.txt.gz。
param($srcUrl, $destFile)
$client = new-object System.Net.WebClient
$client.DownloadFile($srcUrl, $destFile)
Ungzip-File $destFile
Remove-Item $destFile
实际上,调用Remove-Item
时会出现错误。如果$destFile
是相对路径,则脚本会愉快地下载该文件并将其放在相对于$home
的文件中。同样,我解压缩了它,并且我的函数Ungzip-File
使用了System.IO.Filestream
,它似乎能够找到这个文件。然后Remove-Item
抱怨说,在相对于$pwd
的路径中没有文件。
我有点困惑,因为这些都是 shell 的一部分,可以说是同一种函数。我不清楚为什么这些函数会以不同的方式处理路径,更重要的是,我不确定如何修复这个问题,使得相对路径和绝对路径都能正常工作。我已经尝试查看io.path
方法,但由于我的$home
和$pwd
位于不同的驱动器上,所以甚至无法使用IsPathRooted
,尽管这个方法看起来很接近。
需要帮助吗?