2016-04-28 64 views
0

我想構建一個腳本,掃描文件夾樹並驗證它們是否正確的名稱。腳本來檢查文件夾estructure

基本上,作爲一個例子,我有以下文件夾結構:

├───01 
│ ├───010001 
│ │ ├───010001102030405060 
│ │ │ ├───declarante 
│ │ │ ├───docs 
│ │ │ ├───entidadelegal 
│ │ │ ├───proprietario 
│ │ │ └───representante 
│ │ └───010001102030405061 
│ └───010002 
├───02 
├───03 
└───04

隨着網絡的文件夾,往往業主不建立在適當的地方文件夾。每天都會遇到的情況,如:

├───01 
│ ├───010001 
│ │ ├───010001045715873654 
│ │ ├───010001741014756984a 
│ │ ├───010001741z14756984 
│ │ ├───0144dshbc 
│ │ └───014758 
│ ├───010002 
│ ├───010003 
│ └───010004a 
├───02 
├───03 
└───aaa
  • 在文件夾中的第一級,只有文件夾01,02 ... 13
  • 在第二級別的文件夾是文件夾中,只有名稱有6個數字,條件是2/1匹配第一級別的文件夾(例如1級01號文件夾,2級文件夾010,001 ... 1級02文件夾,2級020,001文件夾...) 。
  • 在第三級文件夾中,名稱只有18個數字的文件夾,前提是6/1對應於上一級別的文件夾(例如,級別2:010001文件夾,級別3:010001102030405060文件夾級別... 2 :020,001文件夾,3級:020001123456789012文件夾...)。
  • 在第四和最後一級,其18號每個文件夾,只能包含文件夾與名稱 「declarante」, 「文檔」, 「entidadelegal」, 「的Proprietario」 和「representante「。 可能不是同一時間的5個,但只能是具有這些名稱的文件夾。

正如你在第二個文件夾結構看,上面,在1級,我有一個名爲「AAA」一個錯誤的文件夾。

  • 在級別2,我有一個名爲「010004a」的文件夾錯誤。
  • 在級別3,我的文件夾錯誤爲「010001741014756984a」,「010001741z14756984」,「0144dshbc」和「014758」。

我有一個驗證文件夾名稱的PowerShell腳本,但是如何在文件夾中跳轉文件夾?我怎樣才能做這個練習?

Get-ChildItem | Where-Object { 
    $_.Name -notmatch "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]+$" 
} 
+0

使用Get-childitem並通過每個文件夾層次遍歷。因此,檢查第一個級別是否包含所需的名稱,比做一個foreach gci,並檢查二級要求等等。我們正在做你的功課嗎? :) – Martin

+0

當然不打算做我的「家庭作業」,但這個命令「foreach gci」沒有知識...驗證已經得到,但跳到文件夾中的文件夾不知道該怎麼辦...我會用這個命令測試它能做什麼。 – ghostrat26

+0

gci是get-childitem的別名。 imeant,你將得到頂級的所有項目(目錄)與gci。比你在這些目錄中做一個gci,獲得所有2級目錄,你再次測試你的命名需求。如果測試通過,您將再次對這些文件夾執行gci等操作。 – Martin

回答

0

我認爲你正在尋找的-Recurse交換機上獲取,ChildItem每級

Get-ChildItem -Recurse | Where-Object { $_.Name -notmatch "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]+$" } 
+0

我不能在「Recurse」中使用這個命令,因爲正如我之前所說的,我有幾個關卡和各種檢查,每個關卡都在其關卡中。我期待的是每個級別的安達迪,我的支票。在第一種情況下,第二種情況下的兩個數字在第三種情況下爲18,在第四種情況下顯示除5個被提名人​​以外的所有數字。檢查每個已經知道該怎麼做,但你可以encadiar所有?這就是我懷疑... – ghostrat26

+0

誤解了你的問題。 'encadiar'是什麼意思 – Avner

+0

連鎖,就像插頭...能理解嗎? – ghostrat26