2015-06-24 41 views
0

VB创建下一个文件夹,我们有文件夹的结构非常类似以下内容:按数字顺序

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个项目文件夹和数字序列的最后4位数字的8位数字。前两位数字是年份,第3-4位是月份。所以YYMM1234

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

我需要如下,还是一个相对初级这样下去容易请:

搜索“Y:/示例代码序列/”子目录,并找到其中最后4位数字是最高的号码的文件夹,我们可以因此依次确定下一个数字。

把YY和MM放在它之前,以定义新项目的名称和目录名称。

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

但是,如果序列中的下一个数字是1601,文件夹“1601-1700”将不存在,因此我需要创建它并在其中创建文件夹。

我很想改变目录系统的布局,使其更容易,但它是一个既定的系统,我不允许改变!

由于提前,

杰米

+0

你的问题是什么? – Enigmativity

+0

'Directory.CreateDirectory(路径)'将创建整个路径 – Plutonix

+0

在您拥有9,999个文件夹后会发生什么? (另外,还在等待听到你真正的问题是什么。) – Enigmativity

回答

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) 

我测试过这段代码,它看起来工作正常。