• 用C# Winform做一个文件名批量修改器


    我是一名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; } } } }

    注释比较详细,就不解释啦。希望对你们的工作有帮助和启发。

    运行结果就不截图啦~自己试一试就好。

  • 相关阅读:
    基于51单片机PWM调速L298芯片控制两选一直流电机正反运转的项目工程
    基于51单片机四位一体数码管显示短按加或减数值及长按连加或连减数值的项目工程
    Android 多语言动态更新方案探索
    图解 Promise 实现原理(一)—— 基础实现
    vivo 大规模特征存储实践
    揭秘 vivo 如何打造千万级 DAU 活动中台
    前端科普系列(2):Node.js 换个角度看世界
    分布式定时任务调度框架实践
    深入学习和理解 Redux
    前端科普系列(1):前端简史
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/4611340.html
Copyright © 2020-2023  润新知