测试是否执行了 zip 文件解压命令
Test if zip File extract command executed
我想测试 zip 文件的条件是否已正确提取或在 PowerShell v4 中提取命令时出现任何错误。请更正我的代码。
Add-Type -AssemblyName System.IO.Compression.FileSystem
$file = 'C:\PSScripts\raw_scripts\zipfold\test.zip'
$path = 'C:\PSScripts\raw_scripts\zipfold\extract'
if ( (Test-path $file) -and (Test-path $path) -eq $True ) {
if ((unzip $file $path)) {
echo "done with unzip of file"
} else {
echo "can not unzip the file"
}
} else {
echo "$file or $path is not available"
}
function unzip {
param([string]$zipfile, [string]$outpath)
$return = [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
return $return
}
此脚本提取一个 zip 文件,但显示 "can not unzip file." 作为输出。
不确定 $return
变量的值是什么,我的 If 条件总是失败。
documentation 证实了@Matt 的怀疑。 ExtractToDirectory()
被定义为 void
方法,所以它没有 return 任何东西。因为 $return
总是 $null
,计算结果为 $false
。
话虽如此,如果出现问题,该方法应该抛出异常,因此您可以使用 try
/catch
和 return $false
以防发生异常:
function unzip {
param([string]$zipfile, [string]$outpath)
try {
[IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
$true
} catch {
$false
}
}
我想测试 zip 文件的条件是否已正确提取或在 PowerShell v4 中提取命令时出现任何错误。请更正我的代码。
Add-Type -AssemblyName System.IO.Compression.FileSystem
$file = 'C:\PSScripts\raw_scripts\zipfold\test.zip'
$path = 'C:\PSScripts\raw_scripts\zipfold\extract'
if ( (Test-path $file) -and (Test-path $path) -eq $True ) {
if ((unzip $file $path)) {
echo "done with unzip of file"
} else {
echo "can not unzip the file"
}
} else {
echo "$file or $path is not available"
}
function unzip {
param([string]$zipfile, [string]$outpath)
$return = [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
return $return
}
此脚本提取一个 zip 文件,但显示 "can not unzip file." 作为输出。
不确定 $return
变量的值是什么,我的 If 条件总是失败。
documentation 证实了@Matt 的怀疑。 ExtractToDirectory()
被定义为 void
方法,所以它没有 return 任何东西。因为 $return
总是 $null
,计算结果为 $false
。
话虽如此,如果出现问题,该方法应该抛出异常,因此您可以使用 try
/catch
和 return $false
以防发生异常:
function unzip {
param([string]$zipfile, [string]$outpath)
try {
[IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
$true
} catch {
$false
}
}