我是一名QA,我提bug以后有个习惯,就是将bug的jira地址保存为一个链接存在本地,如下:
每天都要手动的把日期“【XX.XX】”添加在里面,这个反复修改文件名的过程是比较枯燥的,于是我决定写一个窗体tool来实现,窗体如下:
点击选择后会跳出选择的folder路径的界面,这个地方用到了FolderBrowserDialog控件:
之后点击修改就可以修改选择的folder路径下所有的文件名了。
整个窗体的代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; namespace ModifyNamesByLastWriteTime { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //这里是“选择”按钮的代码。 private void SelectPath_Click(object sender, EventArgs e) { FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { pathText.Text = fbd.SelectedPath; } } //这里是“修改”按钮的代码。 private void modifyButton_Click(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(pathText.Text); var fileInfos = dir.GetFiles(); try { foreach (var fileInfo in fileInfos) {
//如果文件名符合规范,返回值为真,就不更改。 if (CheckIfHasBeenModified(fileInfo)) { MessageBox.Show(fileInfo.Name + " is in the right format, no need to modify."); }
//否则就改。 else {
//转换LastWriteTime的格式为“yyyy.mm.dd”。 string LastWriteTime = string.Format("{0:yyyy.MM.dd}", fileInfo.LastWriteTime);
//在转换格式后的LastWriteTime两边加上“【】”。 string fileNamePre = "【" + LastWriteTime + "】";
//修改文件名的方法。 fileInfo.MoveTo(pathText.Text + "\" + fileNamePre + fileInfo.Name.ToString()); } } MessageBox.Show("Names of the files have been modified succesfully."); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } //这是检查文件名是否符合规范的方法。 private static bool CheckIfHasBeenModified(FileInfo file) {
//用正则表达式匹配规范字符串。 string pattern = @"^【[0-9]+.[0-9]+.[0-9]+】$"; Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
//这里如果文件名的长度不足12个字符会抛异常,所以只有在文件名长度大于等于12以后才做进一步校验。 if (file.Name.Length >= 12) { if (regex.IsMatch(file.Name.Substring(0, 12))) {
//匹配规范返回真。 return true; }
//否则返回假。 else { return false; } }
//否则返回假。 else { return false; } } } }
注释比较详细,就不解释啦。希望对你们的工作有帮助和启发。
运行结果就不截图啦~自己试一试就好。