[英]How can we separate folders using powershell script with reference of filename
我是 powershell 腳本的新手,我通過這里的很多文章做了 go 並且無法獲得太多幫助。有人可以幫助我了解如何將文件放入特定文件夾:
文件名示例:
2008_11_chan_3748_NB001052_031_SIGNED.pdf
把它放在文件夾中:
2008/11/NB001052-031/....
如果它以“草稿”結尾,例如
2008_11_chan_3748_NB001052_031_Draft.pdf
把它放在一個單獨的草稿文件夾中,如下所示
2008/11/NB001052-031/Draft
非常感謝任何幫助。 提前致謝。
Push-Location c:\2009
Get-ChildItem -File -Filter *_*_*_*_*_*.pdf |
Move-Item -Destination {
$tokens = $_.Name -split '_'
$subdirNames = $tokens[0,1,4]
if ($tokens[-1] -like 'Draft.*') { $subdirNames += 'Draft' }
(New-Item -Force -Type Directory ($subdirNames -join '\')).FullName
} -WhatIf
Pop-Location
注意:上面命令中的-WhatIf
常用參數預覽移動操作,但在這種情況下會立即創建目標子文件夾。 一旦您確定該操作將執行您想要的操作,請刪除-WhatIf
。
(部分)解釋:
Get-ChildItem
調用獲取當前目錄中名稱與通配符模式匹配的那些文件*_*_*_*_*_*.pdf
。
Move-Item -Destination
使用延遲綁定腳本塊( {... }
) 根據當前輸入 object, $_
動態確定目標路徑,其類型為System.IO.FileInfo
腳本塊內的代碼使用-split
運算符將文件名通過_
拆分為標記,提取感興趣的標記並酌情附加Draft
,然后根據加入的\
-joined 標記創建/返回子目錄路徑,以便output 目標目錄路徑; 請注意, -Force
按需創建目錄並悄悄地返回現有目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.