分类文件扩展名和应用逻辑

时间:2019-05-27 08:57:19

标签: powershell powershell-v4.0

需要根据文件扩展名执行逻辑。

输入:var textFields = [phonenumber, phonenumber1, phonenumber2, phonenumber3] var numArray = [String]() textFields.forEach { if let text = $0.text, text.first == "+" { numArray.append(text) $0.layer.borderWidth = 0.0 //To reset the textField if it didn't validate earlier } else { $0.layer.borderColor = UIColor.red.cgColor $0.layer.borderWidth = 1.0 } }

$FileName = "ABC.tar.gz.manifest" or "ABC.tar.gz" or "ABC.zip"

但是问题是某些文件具有双扩展名。 我们如何解决这个问题?

如果扩展名是$EXTZ = ".zip" $EXTGZ = "tar.gz" $EXT = $FileName -match "$EXTZ" $EXT if ($EXT = 'True') { Write-Host "$EXTZ" } elseif ($EXT = 'False') { Write-Host "$EXTGZ" } ,则需要打印“ ABC”。

如果文件扩展名是.zip.tar.gz,则需要打印“ XYZ”。

2 个答案:

答案 0 :(得分:1)

您可以检查$fileInfo是否包含扩展名(您在if中遇到问题,在PowerShell中无法执行=,而不能执行-eq) :

$Filename = "ABC.tar.gz.manifest"
$EXTGZ = "tar.gz"
$EXT = $Filename.Contains($EXTGZ)
if($EXT -eq $true)
{
   # Do Something
}

答案 1 :(得分:0)

我将使用正则表达式和switch而不是多个if命令

## Q:\Test\2019\05\27\SO_56322763.ps1

foreach ($FileName in ("ABC.tar.gz.manifest","ABC.tar.gz","ABC.zip","foo.bar")){
    "`$FileName is: {0}" -f $FileName

    switch -regex ($FileName){
        "\.tar\.gz(\.manifest)?$" {"XYZ";Break}
        "\.zip$"                  {"ABC";Break}
        default                   {"anything"}
    }
}

示例输出:

> Q:\Test\2019\05\27\SO_56322763.ps1
$FileName is: ABC.tar.gz.manifest
XYZ
$FileName is: ABC.tar.gz
XYZ
$FileName is: ABC.zip
ABC
$FileName is: foo.bar
anything