【发布时间】:2014-03-02 14:42:17
【问题描述】:
我的任务是编写一个 powershell 脚本来执行文件下载,最终将作为计划任务每周执行一次。我没有在 windows 环境下编程的背景,所以今天很有趣。
我遇到了意外处理 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 的路径中没有文件。
我有点困惑,因为这些都是外壳的一部分,可以这么说。我不清楚为什么这些函数会以不同的方式处理路径,更重要的是,我不确定如何解决这个问题,因此相对路径和绝对路径都可以工作。我试过查看io.path 方法,但由于我的$home 和$pwd 位于不同的驱动器上,我什至无法使用IsPathRooted,当我找到它时,它似乎是如此接近。
有什么帮助吗?
【问题讨论】: