我想使用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部分 - 怎么来的?
答案 0 :(得分:0)
当您提供.NET方法的非绝对路径时,它会相对于流程的工作目录(您从哪个目录开始)解析 - 一个不受Set-Location
影响的值。
您可以使用Resolve-Path
$file_out = Join-Path -Path (Resolve-Path '..\Current\CustomerName\').Path -ChildPath "timestamp.zip"