利用遞歸重命名文件名

 

公司的工程文檔的文件名中包含了很多類似於#號的符號,這種命名方法在操作系統中是合法的,但是上載到sps文檔庫中的時候就會出現問題,因此,我通過簡單的代碼將這些符號轉換成全角的符號:

 

private void button2_Click(object sender, System.EventArgs e)

{

if (textBox1.Text=="")

{

MessageBox.Show("請選擇相應的目錄!");

 

}

else

{

MessageBox.Show(@"將替換該目錄下所有文件名中的非法字符,包括:&  ^  %  $  #  @ 等!");

timer1.Enabled =true;

ListFiles(@textBox1.Text);

 

MessageBox.Show("更改的文件數爲:" +m_nCounter.ToString()+"/r/n "+"文件清單請到日誌文件中查閱:log.txt");

pBar1.Value=100;

timer1.Enabled=false;

 

}

 

 

 

}

private void RePlaceFileName(string OldFileName)

{

bool bFlag=false;

string newFileName=OldFileName;

if (OldFileName.IndexOf("#")>0 )

{

newFileName=OldFileName.Replace("#","#");

bFlag=true;

 

}

if (OldFileName.IndexOf("~")>0 )

{

newFileName=newFileName.Replace("~","~");

bFlag=true;

 

}

if (OldFileName.IndexOf("&")>0 )

{

newFileName=newFileName.Replace("&","&");

bFlag=true;

 

}

if (OldFileName.IndexOf("!")>0 )

{

newFileName=newFileName.Replace ("!","!");

bFlag=true;

 

}

if (OldFileName.IndexOf("@")>0 )

{

newFileName=newFileName.Replace ("@","@");

bFlag=true;

 

}

if (OldFileName.IndexOf("$")>0 )

{

newFileName=newFileName.Replace ("$","$");

bFlag=true;

}

if (OldFileName.IndexOf("%")>0 )

{

newFileName=newFileName.Replace ("%","%");

bFlag=true;

}

if (OldFileName.IndexOf("^")>0 )

{

newFileName=newFileName.Replace ("^","︿");

bFlag=true;

}

if (OldFileName.IndexOf("*")>0 )

{

newFileName=newFileName.Replace ("*","*");

bFlag=true;

}

 

if (OldFileName.IndexOf("(")>0 )

{

newFileName=newFileName.Replace ("(","(");

 

bFlag=true;

}

if (OldFileName.IndexOf(")")>0 )

{

 

newFileName=newFileName.Replace (")",")");

bFlag=true;

}

 

try

{

if (bFlag==true)

{

System.IO.File.Move(OldFileName,newFileName);

TextWriter w = File.AppendText("log.txt");

m_nCounter=m_nCounter+1;

 

Log(OldFileName+"::"+m_nCounter.ToString(),w);

 

//Log(str,w);

w.Close();

 

}

//

MessageBox.Show("OK");

}

catch(Exception ex)

{

MessageBox.Show(ex.Message );

}

}

 

private void ListFiles(string strPath)

{

 

try

{

//檢查目錄名稱是否合法

strPath=RePlaceFolderName(strPath);

DirectoryInfo di = new DirectoryInfo(@strPath);

 

FileSystemInfo[] dirs = di.GetDirectories("*");

//列出當前目錄的文件

FileInfo[] rootFiles=di.GetFiles();

foreach(FileInfo rootFile in rootFiles)

{

//MessageBox.Show(rootFile.FullName );

 

string str=rootFile.FullName.ToString();

RePlaceFileName(str);

 

 

}

 

//***********遞歸

foreach (DirectoryInfo diNext in dirs)

{

 

ListFiles(diNext.FullName );

}

}

catch (Exception ex)

{

MessageBox.Show ( ex.Message );

 

timer1.Enabled =false;

this.Close();

}

 

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章