如何使用Powershell检查具有多个扩展名的文件?
我想检查是否存在具有多个扩展名的文件。我试过这种方法,效果很好。但是我需要一个简单的方法来完成这个过程。有人能给我建议如何改进这个过程吗?非常感谢你如何使用Powershell检查具有多个扩展名的文件?,powershell,file,Powershell,File,我想检查是否存在具有多个扩展名的文件。我试过这种方法,效果很好。但是我需要一个简单的方法来完成这个过程。有人能给我建议如何改进这个过程吗?非常感谢你 $Data = "D:\Folder" if (!(Test-Path $Data\*.que)) { if (!(Test-Path $Data\*.pro)) { if (!(Test-Path $Data\*.err)) { if
$Data = "D:\Folder"
if (!(Test-Path $Data\*.que))
{
if (!(Test-Path $Data\*.pro))
{
if (!(Test-Path $Data\*.err))
{
if (!(Test-Path $Data\*.skip))
{
Write-Host "Complete"
}
else {
Write-Host "Finished, But Not Complete"
}
}
else {
Write-Host "Finished, But Not Complete"
}
}
else {
Write-Host ".pro Exist, Not Finished"
}
}
else {
Write-Host ".que Exist, Not Finished"
}
您可以Get ChildItem
获取目录中的文件并仅获取返回对象的扩展属性,然后Group object
获取目录列表以及每个目录的存在数量
您可以
Get ChildItem
获取目录中的文件,只获取返回对象的扩展属性,然后Group object
获取目录列表以及每个目录中存在的目录数量由于您有一些自定义消息,具体取决于文件类型,因此可以通过几种方法来实现这一点。一种方法是将所有内容放入CSV中,并对其进行迭代。为了简化代码,检查文件是否存在似乎是合乎逻辑的。它可能看起来像这样
$CSVData = @'
Extension,NotPresent,Present
que,".que Exist, Not Finished",
pro,".pro Exist, Not Finished",
err,"Finished, But Not Complete",
skip,"Complete","Finished, But Not Complete"
'@ | ConvertFrom-Csv
$Data = "D:\Folder"
$CSVData | foreach {
if(Test-Path "$Data\*.$($_.extension)")
{
Write-Host $_.present
}
else
{
write-host $_.notpresent
}
}
除了您实际回复的那一列之外,我将当前列留空。如果您不需要填写这些内容,您可能需要在写入主机之前检查$中是否有任何内容
$CSVData = @'
Extension,NotPresent,Present
que,".que Exist, Not Finished",
pro,".pro Exist, Not Finished",
err,"Finished, But Not Complete",
skip,"Complete","Finished, But Not Complete"
'@ | ConvertFrom-Csv
$Data = "D:\Folder"
$CSVData | foreach {
if(Test-Path "$Data\*.$($_.extension)")
{
if($null -ne $_.present)
{
Write-Host $_.present
}
}
else
{
write-host $_.notpresent
}
}
由于您有一些根据文件类型定制的消息,因此可以通过几种方法来实现这一点。一种方法是将所有内容放入CSV中,并对其进行迭代。为了简化代码,检查文件是否存在似乎是合乎逻辑的。它可能看起来像这样
$CSVData = @'
Extension,NotPresent,Present
que,".que Exist, Not Finished",
pro,".pro Exist, Not Finished",
err,"Finished, But Not Complete",
skip,"Complete","Finished, But Not Complete"
'@ | ConvertFrom-Csv
$Data = "D:\Folder"
$CSVData | foreach {
if(Test-Path "$Data\*.$($_.extension)")
{
Write-Host $_.present
}
else
{
write-host $_.notpresent
}
}
除了您实际回复的那一列之外,我将当前列留空。如果您不需要填写这些内容,您可能需要在写入主机之前检查$中是否有任何内容
$CSVData = @'
Extension,NotPresent,Present
que,".que Exist, Not Finished",
pro,".pro Exist, Not Finished",
err,"Finished, But Not Complete",
skip,"Complete","Finished, But Not Complete"
'@ | ConvertFrom-Csv
$Data = "D:\Folder"
$CSVData | foreach {
if(Test-Path "$Data\*.$($_.extension)")
{
if($null -ne $_.present)
{
Write-Host $_.present
}
}
else
{
write-host $_.notpresent
}
}