![](/img/trans.png)
[英]how to check if a specific file extension exists in a folder using powershell?
[英]How to check file with multiple extension using Powershell?
我想檢查是否存在具有多個擴展名的文件。 我試過這種方法,它有效。 但我需要簡單的方法來完成這個過程。 有沒有人可以給我建議如何改進這個過程? 非常感謝。
$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 -Path 'D:\Folder' -File -Recurse).Extension | 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
}
}
除了您實際回復的那一欄之外,我將“禮物”欄留空。 如果您不需要填寫這些,您可能需要在Write-Host
之前檢查$_.present
是否有任何內容
$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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.