所以我想升級我的刪除項目單行程式碼。我想將主檔案路徑(\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test)分解為在腳本頂部定義的兩個變數。就像是:
- $rootdir = "\HQDEVAPP004\C$\LoneStar"
- $svcdir = {在此插入服務名稱}(即訊息路由器、處理器處理程序)
然後創建第三個變量,即完整目錄路徑,它將 1 + 2 粘合在一起,我知道這可以使用“+”運算符來完成,如果我錯了,請糾正我。
我的想法是,最終,我將能夠運行 foreach 循環來獲取並設置 svcdir 路徑,動態地將要刪除文件的完整目錄路徑粘合在一起,運行刪除過程,然後移動到下一個服務的資料夾。我希望我的解釋是正確的。如果有機會想看看我一直在使用的一行,我會將其放在下面:
Get-ChildItem -recurse \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* | Remove-Item
答案1
首先,Remove-Item
接受通配符的 Path 和 LiteralPath 屬性,因此您目前的一個班輪已經可以在沒有通配符的情況下工作Get-ChildItem
Remove-Item \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* -Recurse -Force
關於“粘合在一起”,我建議使用Join-Path
或 Format 運算符-f
。
Join-Path
例(有了這個你不必擔心反斜線):
PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar"
PS C:\> $svcdir = "Message Router"
PS C:\> Join-Path $rootdir $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router
-f
範例(請注意{0}
您提供的參數將被放置的位置):
PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar\{0}"
PS C:\> $svcdir = "Message Router"
PS C:\> $rootdir -f $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router
所以是的,你可以遍歷所有路徑並執行這種黏合操作,但是你也可以直接提供你想要的所有路徑,Remove-Item
因為它可以處理陣列:
cd "\\HQDEVAPP004\C$\LoneStar"
Remove-Item ".\Message Router\*.*",".\SomeOtherPath" -Recurse -Force