文件扩展名分类及应用逻辑
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
需要根据文件扩展名执行逻辑。
输入:$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