如何遍历目录下所有文件夹,并给文件夹改名?

解决方案 »

  1.   

    估计又要用到WMI了,我用System.IO.DirectoryInfo试了下发现可以遍例
    但是不支持给文件夹改名.
      

  2.   

    这样
    主程序里写
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"d:\");
    if(di.Exists)
    {
      Info(di);
    }函数在这里private void Info(System.IO.DirectoryInfo di)
    {
      if(di.Exists)
        {
          System.IO.DirectoryInfo[] di_list = di.GetDirectories();
          foreach(System.IO.DirectoryInfo di1 in di_list)
            {
              if(di1.Name.Trim().ToUpper()=="旧文件夹")
                {
                  System.IO.DirectoryInfo di2 = new System.IO.DirectoryInfo(di.FullName+@"\新文件夹");
                  if(!di2.Exists)
                  di2.Create();
                  System.IO.DirectoryInfo[] di1_list = di1.GetDirectories();
                  foreach(System.IO.DirectoryInfo di1_movelist in di1_list)
                    {
                      di1_movelist.MoveTo(di2.FullName);
                    }
                }
               Info(di1);
           }
       }
    }
    但这个只是对目录有效,如果目录里还有文件,嘿嘿,还不行
      

  3.   

    写错了点,函数应该这样: private void Info(System.IO.DirectoryInfo di)
    {
    if(di.Exists)
    {
    System.IO.DirectoryInfo[] di_list = di.GetDirectories();
    foreach(System.IO.DirectoryInfo di1 in di_list)
    {
    if(di1.Name.Trim().ToUpper()=="旧文件夹")
    {
    System.IO.DirectoryInfo di2 = new System.IO.DirectoryInfo(di.FullName+@"\新文件夹");
    if(!di2.Exists)
    di2.Create();
    System.IO.DirectoryInfo[] di1_list = di1.GetDirectories();
    foreach(System.IO.DirectoryInfo di1_movelist in di1_list)
    {
    di1_movelist.MoveTo(di2.FullName);
    }
    di1.Delete();
    }
    else
    {
    Info(di1);
    }
    }
    }
    }
      

  4.   

    这个是递归找文件的代码,俺自用的
    private string GetFileName(string strFirstPath)
    {
    try
    {
    string strFullPath = "";
    if(File.Exists(strFirstPath + "\\" + this.txtFileName.Text))
    {
    strFullPath = strFirstPath + "\\" + this.txtFileName.Text;
    return strFullPath;
    }
    else if(Directory.GetDirectories(strFirstPath).Length != 0)
    {
    // string strGetFile = "";
    string[] arrPath = Directory.GetDirectories(strFirstPath);
    foreach(string strSubDir in arrPath)
    {
    string strTmp = GetFileName(strSubDir);
    if( strTmp== "" )
    {
    continue;
    }
    else
    {
    return strTmp;
    }
    }
    return "";
    }
    else
    {
    return "";
    } }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    return "-1";
    }