2017-10-06 142 views
-1

我试图设置一个循环,修改所有目录中的日期@"C:\testFolder"到目前为止,我已将代码粘贴到下面,任何帮助表示赞赏。创建一个循环,修改目录日期

static void Main() 
{ 
    string n = @"C:\testFolder"; 
    DateTime dtime1 = new DateTime(2015, 1, 3); 

    if (Directory.Exists(n)) 
     Directory.SetCreationTime(n, dtime1); 
     Directory.SetLastWriteTime(n, dtime1); 

     Console.WriteLine("Done"); 

} 
+0

而问题是...... –

+0

这似乎是试图改变时间戳为“测试文件夹”,当我试图改变“测试文件夹”内的所有目录的日期。该程序崩溃,我得到一个“IOException被处理 - 进程无法访问文件c:\ testFolder,因为它正在被另一个进程使用。@SamAxe – user7701115

回答

2

不带大括号的if语句只适用于紧跟在它后面的语句。确保用大括号包围整个街区。

此外,您还可以使用Directory.GetAllDirectories(..)SearchOption指定您希望testFolder递归下的所有目录。以下显示了这一点,但如果这是您想要的,您也可以使用SearchOption.TopDirectoryOnly

static void Main() 
{ 
    string n = @"C:\testFolder"; 
    DateTime dtime1 = new DateTime(2015, 1, 3); 

    if (Directory.Exists(n)) { 
     string[] allSubDirectories = Directory.GetDirectories(n, "*", SearchOption.AllDirectories); 
     foreach(var dir in allSubDirectories) { 
      Directory.SetCreationTime(n, dtime1); 
      Directory.SetLastWriteTime(n, dtime1); 
     } 
    } 

    Console.WriteLine("Done"); 
} 
0

如果你想设置,你可以做这个目录中的所有目录日期:

static void Main() 
{ 
    string n = @"C:\testFolder"; 
    DateTime dtime1 = new DateTime(2015, 1, 3); 

    if (Directory.Exists(n)) 
    { 
     Directory.SetCreationTime(n, dtime1); 
     Directory.SetLastWriteTime(n, dtime1); 
     var directories = Directory.GetDirectories(n); 

     foreach(directory in directories) 
     { 
       Directory.SetCreationTime(directory , dtime1); 
       Directory.SetLastWriteTime(directory , dtime1); 
     } 

    } 
    Console.WriteLine("Done"); 

}