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

简介: 我是一名QA,我提bug以后有个习惯,就是将bug的jira地址保存为一个链接存在本地,如下: 每天都要手动的把日期“【XX.XX】”添加在里面,这个反复修改文件名的过程是比较枯燥的,于是我决定写一个窗体tool来实现,窗体如下: 点击选择后会跳出选择的folder路径的界面,这个地方用到了FolderBrowserDialog控件: 之后点击修改就可以修改选择的folder路径下所有的文件名了。

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

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

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

 

相关文章
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
234 0
C#WinForm基础编程(二)
C#WinForm基础编程
268 0
|
C# 数据安全/隐私保护
C#WinForm基础编程(一)
C#WinForm基础编程
203 0
|
小程序 C#
C#WinForm实现Loading等待界面
上篇博客中解决了程序加载时屏幕闪烁的问题。 但是,加载的过程变得很缓慢。 这个给用户的体验也不是很好,我这里想加一个Loading的进度条。 项目启动的时候,加载进度条,界面UI加载完毕,进度条消失。
728 0
|
关系型数据库 MySQL C#
C# winform 一个窗体需要调用自定义用户控件的控件名称
给用户控件ucQRCode增加属性: //二维码图片 private PictureBox _pictureBoxFSHLQrCode; public PictureBox PictureBoxFSHLQrCode {   get { return _pictureBoxFSHLQrCode; }   set { this.pictureBoxFSHLQrCode = value; } } 在Form1窗体直接调用即可: ucQRCode uQRCode=new ucQRCode(); ucQRCode.PictureBoxFSHLQrCode.属性= 要复制或传给用户控件上的控件的值
162 0
|
11月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
296 12
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
716 1
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
526 3
C#winform中使用SQLite数据库

热门文章

最新文章

下一篇
oss云网关配置