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

Classify file extension and applying logic

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

输入:$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"
}

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

如果扩展名是.zip需要打印"ABC"。

如果文件扩展名为.tar.gz.tar.gz.manifest需要打印"XYZ".

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

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

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

## Q:\Test19\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:\Test19\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