公司的工程文檔的文件名中包含了很多類似於#號的符號,這種命名方法在操作系統中是合法的,但是上載到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();
}
}