VB在数字序列中创建下一个文件夹

时间:2015-06-24 23:50:26

标签: vb.net

我们有一个文件夹结构,如下所示:

Y:/Sample Code Sequence/1001 - 1100/15061089
Y:/Sample Code Sequence/1001 - 1100/15061090
Y:/Sample Code Sequence/1001 - 1100/15061091
Y:/Sample Code Sequence/1001 - 1100/15071092
....
Y:/Sample Code Sequence/1101 - 1200/15071111
Y:/Sample Code Sequence/1001 - 1100/15071131

每个目录中有100个项目文件夹,数字序列是8位数字的最后4位数字。前两位是年份,第3-4位是月份。所以YYMM1234

我已经写了一些代码来创建文件夹并用我需要的东西填充它但是目前你必须选择它所在的文件夹,然后选择将文件夹命名为的数字。

我需要如下,我仍然是一个相对初学者,所以请轻松一下:

搜索" Y:/示例代码序列/"子目录并找到最后4位数字最高的文件夹,因此我们可以按顺序确定下一个数字。

将它与前面的YY和MM放在一起,以定义新项目的名称,从而定义目录名称。

如果文件夹中应该包含新文件夹,那么我需要创建文件夹,即下一个数字是xxxx1503和文件夹" 1501 - 1600"已经存在,我可以在那里创建文件夹....

但是,如果序列中的下一个数字是1601,则文件夹" 1601 - 1700"还没有存在,因此我需要创建它,然后在其中创建文件夹。

我希望更改目录系统布局以使其更容易,但它是一个已建立的系统,我不允许更改!

提前致谢,

杰米

1 个答案:

答案 0 :(得分:1)

目前尚不清楚你的问题究竟是什么。我只是假设你不知道如何去做你需要的事情。

首先,让我们从一些基础知识开始。我们需要知道我们正在搜索的父目录 - 我们需要能够捕获有效子文件夹的当前项目编号。

Dim parentFolder = "Y:\Sample Code Sequence"

Dim regex = New Regex( _
    "^.{" _
    & parentFolder.Length.ToString() _
    & "}\\\d{4} - \d{4}\\\d{4}(\d{4})$")

现在我们要查询文件夹以检索最大项目编号并向其添加一个。

Dim query = _
    From d1 In Directory.EnumerateDirectories(parentFolder) _
    From d2 In Directory.EnumerateDirectories(d1) _
    Let m = regex.Match(d2) _
    Where m.Success _
    Let count = Integer.Parse(m.Groups(1).Value) _
    Order By count Descending _
    Select count

Dim nextProject = query.FirstOrDefault() + 1

最后,我们只需构建新的项目文件夹名称并创建它。

Dim newProjectFolder = String.Format( _
    "{0}\{1:0000} - {2:0000}\{3:00}{4:00}{5:0000}", _
    parentFolder, _
    ((nextProject - 1) \ 100) * 100 + 1, _
    ((nextProject - 1) \ 100) * 100 + 100, _
    DateTime.Now.Year Mod 100, _
    DateTime.Now.Month, _
    nextProject)

Directory.CreateDirectory(newProjectFolder)

我已经测试了这段代码,看起来效果很好。