用于检查文件夹结构的脚本

时间:2016-04-28 07:10:48

标签: powershell structure directory

我正在尝试构建一个扫描文件夹树的脚本,并验证它们的名称是否正确。

基本上,作为一个例子,我有以下文件夹结构:

├───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与第一级别的文件夹匹配(例如Level 1:01文件夹,级别2:文件夹010,001 ...级别1:02文件夹,级别2:020,001文件夹...)。
  • 在第三级文件夹中,名称只有18个数字的文件夹,前提是6/1对应于上一级别的文件夹(例如,级别2:010001文件夹,级别3:010001102030405060文件夹级别... 2 :020,001文件夹,级别3:020001123456789012文件夹...)。
  • 在第四级和最后一级,每个包含18个号码的文件夹只能包含名称为&#34; 声明&#34;,&#34; docs <的文件夹/ strong>&#34;,&#34; entidadelegal &#34;,&#34; proprietario &#34;和&#34; 代表&#34;。 可能不是同时的5,但只能是具有这些名称的文件夹。

正如您在第二级文件夹结构中所见,在第1级,我有一个名为&#34; aaa&#34;的错误文件夹。

  • 在第2级,我有一个名为&#34; 010004a&#34;的错误文件夹。
  • 在第3级,我的文件夹错误为&#34; 010001741014756984a&#34;,&#34; 010001741z14756984&#34;,&#34; 0144dshbc&#34;和&#34; 014758&#34;。

我有一个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]+$"
}

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找Get-ChildItem上的-Recurse开关

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]+$" }