using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; namespace ChangeFileName { public partial class jiance : Form { public int tem = 0; public List<string> tem_list = new List<string>(); public jiance() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { textBox1.Text = fbd.SelectedPath; } } private void button2_Click(object sender, EventArgs e) { DirectoryInfo d = new DirectoryInfo(textBox1.Text); GetAll(d); MessageBox.Show("操作完成"); } private void button3_Click(object sender, EventArgs e) { tem = 0; tem_list = new List<string>(); DirectoryInfo d = new DirectoryInfo(textBox1.Text); ReplaceAll(d); MessageBox.Show("操作完成"); label3.Text = tem.ToString(); var tem_str=""; if (tem != 0) { for (int i = 0; i < tem_list.Count; i++) { tem_str += tem_list[i] + " "; } } textBox4.Text = tem_str; } void GetAll(DirectoryInfo dir)//搜索文件夹中的文件 { FileInfo[] allFile = dir.GetFiles(); foreach (FileInfo fi in allFile) { if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css") { // var fileName = fi.Name; var fileName = fi.FullName; //防止文本字符中有特殊字符。必须用Encoding.Default StreamReader reader = new StreamReader(fileName, Encoding.Default); String a = reader.ReadToEnd(); //将a.hhp文件中bb替换为cc。 a = a.Replace(textBox2.Text.Trim() + GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim()) + textBox3.Text.Trim(), ""); //a.hhp重命名为b.hhp //防止文本字符中有特殊字符。必须用Encoding.Default StreamWriter readTxt = new StreamWriter(@"b.hhp", false, Encoding.Default); readTxt.Write(a); readTxt.Flush(); readTxt.Close(); reader.Close(); //b.hhp重命名为a.hhp,并删除b.hhp File.Copy(@"b.hhp", fileName, true); File.Delete(@"b.hhp"); } } DirectoryInfo[] allDir = dir.GetDirectories(); foreach (DirectoryInfo d in allDir) { GetAll(d); } } void ReplaceAll(DirectoryInfo dir)//搜索文件夹中的文件 { FileInfo[] allFile = dir.GetFiles(); foreach (FileInfo fi in allFile) { if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css" || fi.Extension == ".txt") { // var fileName = fi.Name; var fileName = fi.FullName; //防止文本字符中有特殊字符。必须用Encoding.Default StreamReader reader = new StreamReader(fileName, Encoding.Default); String a = reader.ReadToEnd(); var stringtem = GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim()); if (!string.IsNullOrEmpty(stringtem)) { tem++; tem_list.Add(fileName); } } } DirectoryInfo[] allDir = dir.GetDirectories(); foreach (DirectoryInfo d in allDir) { ReplaceAll(d); } } /// <summary> /// 获得字符串中开始和结束字符串中间得值 /// </summary> /// <param name="str">字符串</param> /// <param name="s">开始</param> /// <param name="e">结束</param> /// <returns></returns> public static string GetValue(string str, string s, string e) { Regex rg = new Regex("(?<=(" + s + "))[.\s\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline); return rg.Match(str).Value; } } }