2016-04-28 33 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

相关问题