在檢索目錄中的檔案遞回串列時,是否有一種簡單的方法來剝離根目錄?
例如
Get-ChildItem -Recurse "C:\Test\Folder" | Where { ! $_.PSIsContainer } | Select FullName | Out-File "C:\Test\Folder\items.txt"
但不是這給了我:
C:\Test\Folder\shiv.png
C:\Test\Folder\Another\kendall.png
C:\Test\Folder\YetAnother\roman.png
它給了我:
Folder\shiv.png
Folder\Another\kendall.png
Folder\YetAnother\roman.png
這可能在一行中還是我必須撰寫一個回圈?
還有一種輸出方法不會在行之間創建間隙或在頂部吐出 select 屬性的名稱嗎?(在這種情況下是“全名”),還是我只需要手動回圈并忽略它們?
uj5u.com熱心網友回復:
您在“間隙”方面遇到的問題是由于 Powershell 在顯示物件時的格式。如果你想獲得純值,你可以使用-ExpandProperty開關:
select -Expand FullName
至于你的問題,你可以這樣做:
$dir = "C:\Test\Folder"
Get-ChildItem $dir -Recurse -File | foreach {
$_.FullName.Replace("$dir\", "")
} | Out-File "C:\Test\Folder\items.txt"
請注意,這將區分大小寫。如果這是一個問題,您可以使用正則運算式:
$dir = "d:\tmp"
$pattern = [Regex]::Escape($dir) "\\?"
Get-ChildItem $dir -Recurse -File | foreach {
$_.FullName -replace $pattern, ""
}
uj5u.com熱心網友回復:
這可以滿足您的要求:
Get-ChildItem -Recurse "C:\Test\Folder" | Where { ! $_.PSIsContainer } | Select -ExpandProperty FullName | % { $_.Split("\")[2..1000] -Join "\" }
輸出:
Folder\shiv.png
Folder\Another\kendall.png
Folder\YetAnother\roman.png
說明: 的結果Get-ChildItem在\回傳陣列的字符上拆分。下一位[2..1000]從元素 2 開始對陣列進行切片(以及陣列的其余部分,直到指定的數字,因此只需取一個足夠大的數字)。最后,我們使用-Join運算子將陣列連接成一個新字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/351186.html
