Powershell - 使用[io.compression.zipfile] :: CreateFromDirectory时出错

时间:2016-02-09 02:33:51

标签: powershell

我想使用powershell使用目录的内容创建一个.zip文件,我使用绝对路径名取得了一些成功但是现在我试图切换到相对路径I' m我尝试创建.zip文件时收到错误。

在脚本的主体中,我使用

设置脚本所在目录的路径
$scrPath = Split-Path $myInvocation.MyCommand.Path
Set-Location $scrPath

然后我初始化2个变量来存储相对路径,然后使用这些变量作为参数:

$timeStamp = (get-date).ToString("ddMMyyyy")
$files_in = "..\Current\CustomerName\Temp\"
$file_out = "..\Current\CustomerName\" + $timeStamp + ".zip"
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipFile]::CreateFromDirectory($files_in, $file_out)

$ files_in变量可以正常工作并找到我之后的文件,但是系统正在使用$ file_out变量执行奇怪的操作并且找不到正确的输出路径。

我看到的错误:

  

异常调用" CreateFromDirectory"用" 2"参数:"可以   找不到路径的一部分   ' C:\用户\电流\客户名称\ fileName.zip'

我设置$ file_out变量的方式,我希望它输出到C:\ Users \ My.Username \ Desktop \ MyProject \ Current \ CustomerName \ fileName.zip但它&#39 ; s省略了路径的\ My.Username \ Desktop \ MyProject部分 - 怎么来的?

1 个答案:

答案 0 :(得分:0)

当您提供.NET方法的非绝对路径时,它会相对于流程的工作目录(您从哪个目录开始)解析 - 一个不受Set-Location影响的值。

您可以使用Resolve-Path

解决相对于提示的当前位置的问题
$file_out = Join-Path -Path (Resolve-Path '..\Current\CustomerName\').Path -ChildPath "timestamp.zip"