【问题标题】:How to copy zip folder in powershell如何在powershell中复制zip文件夹
【发布时间】:2020-05-14 21:55:03
【问题描述】:
如何使用用户输入值而不是硬编码来复制 zip 文件夹,并且在将 zip 放入 Visual Studio 的 distination 文件夹后需要清理和构建 .csproj
$source = "C:\Users\name\Downloads"
$archive = "C:\Users\name\Downloads"
$Name = "xyz.zip"
$destination = "D:\repo"
$ArchiveFile = Join-Path -Path $archive -ChildPath $Name
Copy-Item -Path $ArchiveFile -Destination $destination -Force
【问题讨论】:
标签:
powershell
powershell-4.0
【解决方案1】:
参数化你的变量!
- 将您的代码包含在
function 定义中,
function Copy-BuildArchive
{
param()
$archive = "C:\Users\name\Downloads"
$Name = "xyz.zip"
$destination = "D:\repo"
$ArchiveFile = Join-Path -Path $archive -ChildPath $Name
Copy-Item -Path $ArchiveFile -Destination $destination -Force
}
- 获取您希望用用户输入替换的变量,并将它们移动到
param 块中:
function Copy-BuildArchive
{
param(
[string]$Name,
[string]$Archive,
[string]$Destination
)
$ArchiveFile = Join-Path -Path $Archive -ChildPath $Name
Copy-Item -Path $ArchiveFile -Destination $Destination -Force
}
- 添加一些基本的输入验证,也许还有一些默认值:
function Copy-BuildArchive
{
param(
[Parameter(Mandatory = $true)]
[string]$Name,
[string]$Archive = $(Join-Path $HOME "Downloads"),
[string]$Destination = $(Join-Path $HOME "Documents")
)
$ArchiveFile = Join-Path -Path $Archive -ChildPath $Name
Copy-Item -Path $ArchiveFile -Destination $Destination -Force
}
恭喜 - 您刚刚将脚本变成了参数化函数!
现在,在执行function 定义之后,你可以这样做:
Copy-BuildArchive -Name project.zip -Archive C:\build\path -Destination C:\output\path
或
Copy-BuildArchive -Name somethingElse.zip # using default values for Archive and Destination