2016-04-19 25 views
0

是空的我有一堆目錄搜索多個文件夾,以檢查他們是否使用PowerShell

C:\ RI1

C:\ RI2

C:\ RI3

.. C:\ RI21

如何檢查它們是否全部爲空?只有當其中一個或多個文件有文件時,我纔想進一步閱讀腳本。如果沒有,我想退出。我試過,但它正在搜索的文件夾名稱,並給了我21回答

$directoryInfo = Get-ChildItem C:\RI* | Measure-Object 
$directoryInfo.count 

if ($directoryInfo.count -eq 0) 
{ 

    Write-host "Empty" 
} 

else 
{ 
    Write-host "Not Empty" 
} 

回答

1

當您運行Get-ChildItem C:\RI*你在C中的所有子項:\和過濾器與「RI開始項目的結果」。由於C:\中有21個文件夾以「RI」開頭,因此您將得到答案21。

我建議你使用foreach循環遍歷所有文件夾。

$folders = @("RI1", "RI2", "RI3") 

foreach ($folder in $folders) 
{ 
    $path = "C:\$folder" 
    $directoryInfo = Get-ChildItem $path 
    if ($directoryInfo.count -eq 0) 
    { 
     Write-Host "Empty" 
    } 
    else 
    { 
     Write-Host "Not Empty" 
    } 
} 
+0

問題是,他們可能會添加更多文件夾,並且添加的文件夾不在我們的手中。我們所知道的是,它會以RI開始。有沒有一種方法來使用通配符進行循環,而不顯式指定文件夾名稱? –

+1

然後,您還必須獲取C:\中的所有文件夾,其中名稱與您的要求相符。 '$ folders = Get-ChildItem C:\ | ?{$ _。PSIsContainer} |其中{$ _.name.StartsWith(「RI」)}' – David

+0

哇 - 如果這是它必須發生的唯一方式,那麼我估計我註定了。需要很長時間才能執行腳本。 非常感謝大衛的幫助! –

相關問題