用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;
            }
        }
    }
}

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

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

时间: 2024-10-20 03:33:56

用C# Winform做一个文件名批量修改器的相关文章

C++开发人脸性别识别教程(18)——辅助功能之文件名批量修改、方法验证

时光推移了30多天,这个人脸性别识别的小项目也接近尾声了,预计再通过三篇博文的篇幅来完成这个项目的收尾工作.在这篇博文中我们再为程序添加另外两个小的辅助功能:文件名批量修改.方法验证. 一 文件名批量修改 批量修改文件名是一件很基础也很常用的小操作,核心操作就是图像文件的批量读取.批量改名.批量保存.基本思想就是把文件读出来,然后在保存回去(注意不要和别的文件发生覆盖),从这个角度来讲文件名批量修改与上一篇博客C++开发人脸性别识别教程(17)——辅助功能之人脸批量分割中的人脸批量分割简直如出一

python:批量修改文件名批量修改图片尺寸

参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # -*- coding:utf-8 -*- # 图像批量重命名 import string import random import os import shutil def rename(path , newname):   #对文件重命名        

文件扩展名批量修改器

之前在使用SourceInsight查看一些开源项目的源代码时发现了一个很重要的问题,就是有些开源的工程的头文件现在都没有.h的后缀名了.编译器可以包含这些没有扩展名的头文件,但是使用SourceInsight打开这些工程时却没办法包含这些头文件,或者说即使包含了这些头文件在SourceInsight中查看源码时要找到某个类的声明更本找不到,不知道这算不算SourceInsight的一个bug. 我使用SouceInsight主要的原因就是开发时使用的开源库文档很少,很多时候要查看某个函数的用法

做一个Android音乐播放器是遇到的一些困难

最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2.想做一个音乐列表做不出来知道要用Listview控件,网上也找了许多的音乐播放器的代码,但导入项目中总会出错,所以想在这里请教各位 3.除了布局有困难外,实现相关功能也有困难,由于基础不行所以我并不想也做不出网上音乐播放器那么多的功能,我只想要我的播放器有播放,暂停,上一曲,下一曲的效果就行了,这还

用nodejs做一个svn密码修改页面

linux上配置好svn后,管理修改密码还得去手工修改passwd这个文件,太麻烦,其实网上应该有配套的web管理修改界面.但我想自己用nodejs写一个,因为用node不用配置复杂的服务器. 弄这种基于事件模型的语言,一定要小心,整个过程可能不是线性的. 1 var http = require("http"); 2 var fs = require('fs'); 3 var url = require('url'); 4 var query = require('querystri

windows下 批量修改文件名

Windows系统下批量修改文件名的详细步骤 听语音 | 浏览:11135 | 更新:2017-08-06 01:36 | 标签:windows 1 2 3 4 5 6 7 分步阅读 Windows系统下批量修改文件名的详细步骤 工具/原料 Dos命令操作 简单批量修改文件名 1 在Windows系统上批量修改文件名是非常简单的.选择所有的文件,按F2,然后输入一下描述性的文本,按enter键之后,所选的文件会以输入的描述性文字加数字排列. END 多步修改文件名 在任意一个盘中新建一个文件夹,

Unity3D Editor模式下批量修改prefab

最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: 1 [ExecuteInEditMode] 2 [MenuItem("Tools/RecordPoint Add Flame")] 3 private static void RecordPointAddFlame() 4 { 5 GameObject twoSphere = AssetDatabase.LoadAss

Dedecms sql命令批量修改内容

今天要修改一个网站的栏目命名方法,因为网站的文章数目太多了,为了方便管理和优化把栏目尽量的扁平化简单化,就要修改dedecms生成页面的命名方法,100多个栏目一个一个改要改多久啊,就从网上找了一个sql批量修改命名的方法,随便也把其他dedecms sql命名方法也发上来: select namerule from dede_arctype select namerule2 from dede_arctype update dede_arctype set namerule='{typedir

VirtualBox硬件级虚拟机 vbox修改器去虚拟化 批量管理工具 支持批量启动克隆

浪潮vbox批量管理工具--v2019 软件价格 此版本采用注册码方式 软件绑定电脑使用包月20元 包年120元 永久版200元 https://item.taobao.com/item.htm?id=598192994387 Ω.Ω: 1311190882 特别说明1.此工具是基于官方版本VirtualBox,在购买我们软件之前请自行安装好vbox主程序!2.如果vbox不能正常使用,可以联系我们客服远程安装或处理,收费20元3.该工具支持批量链接克隆与完整克隆链接克隆一个新的虚拟机才2-3M