簡體   English   中英

我們如何使用 powershell 腳本並參考文件名來分隔文件夾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM