2014-10-08 50 views
0

我有我通過目錄內容要循環一個簡單的代碼示例:訪問裏面外面的foreach變量在PowerShell中

$path = "C:\Users\BISWAJI\Desktop\Novels" 

$content = dir -path $path | where { $_.Mode -match "^d.*" } 

foreach ($item in $content) 
{ 
    "Items under the folder $path\$item are :" 
    dir -path "$path\$item" | select name,mode 
} 

麻煩的是腳本是無法讀取裏面的foreach變量$路徑循環。任何人都可以請給我任何想法?這是正常的行爲嗎?

+0

你正在得到什麼具體的錯誤? – EBGreen 2014-10-08 17:38:59

回答

0

您的foreach命令應如下所示。請注意,你缺少一個echo命令打印線,你必須使用;

foreach ($item in $content) {"Items under the folder $path\$item are :"; dir -path "$path\$item" | select name,mode } 

分隔兩個不同的命令,你可以一試這種使用ForEach-Object命令行

dir -path $path | where { $_.Mode -match "^d.*" }|ForEach-Object {Write-Host "Items under the folder $path\$_ are :"; dir -path "$path\$_" | select name,mode} 
+0

那正是我之前所做的事情嗎?這只是一條線。我改變它,因爲你建議它仍然不工作: – 2014-10-08 17:24:50

+0

回聲不是必需的順便說一句。默認是寫入輸出。 – EBGreen 2014-10-08 17:25:43

+0

@SubhayanBhattacharya,不,你錯過了';'。此外,我在PowershellV2.0中嘗試了相同的代碼,它工作正常。 – Rahul 2014-10-08 17:27:18

0

我認爲這將爲你工作,但你的代碼在我的系統上運行良好。

dir -path "C:\Users\BISWAJI\Desktop\Novels" | foreach { 
if($_.PSIsContainer) { 
    dir -path $_.Fullname | select name,mode 
} 
}