我是一名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 >= )
{
if (regex.IsMatch(file.Name.Substring(, )))
{
            //匹配规范返回真。
return true;
}
          //否则返回假。
else
{
return false;
}
}
       //否则返回假。
else
{
return false;
}
}
}
}

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

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

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

  1. 使用python做一个IRC在线下载器

    使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...

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

    批量修改文件名  参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  3. iOS --- DIY文件名批量修改

    批量修改文件名: // 1.创建文件管理 NSFileManager *filemanager =[NSFileManager defaultManager]; // 2. 获得所有文件夹路径 NSS ...

  4. 用区块链技术做一个 不可被修改的 恋爱记录 app 我叫<<誓言>>

    区块链技术 具有不可篡改,去中心化,共识机制等优秀的特性, 都用来做 代币钱包什么的.我觉得完全是浪费. 我的想法是用哪个区块做一个dapp 1 里面写着每个人的恋爱记录,爱情宣言. 2 一个人一生 ...

  5. [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难

    最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...

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

    linux上配置好svn服务后,管理修改密码还得去手工修改passwd这个文件,略麻烦,其实网上应该有配套的web管理修改界面程序.但我想自己用nodejs写一个,因为用node不用配置复杂的服务器. ...

  7. 利用Django和装饰器做一个简单的修改密码页面

    view视图代码: from django.shortcuts import render,redirect from django.http import HttpResponse from PIL ...

  8. 用C#做一个 拉流播放器

    做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是  cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...

  9. rename 批量修改文件名

    1.rename的用法 rename与mv的区别就是mv只能对单个文件重命名,而rename可以批量修改文件名 linux中的rename有两种版本,一种是C语言版的,一种是Perl版的.早期的Lin ...

随机推荐

  1. Python C/C++ 拓展使用接口库(build-in) ctypes 使用手册

    Python C/C++ 拓展使用接口库(build-in) ctypes 使用手册 ctypes 是一个Python 标准库中的一个库.为了实现调用 DLL,或者共享库等C数据类型而设计.它可以把这 ...

  2. Java多线程系列目录(转)

    转载方便自己学习,转自:Java多线程系列目录(共43篇) http://www.cnblogs.com/skywang12345/p/java_threads_category.html 最近,在研 ...

  3. windows登陆密码破解方法之一

    网上的一些人让别人进入命令提示符安全模式,我比较奇怪如果没有密码怎么进去?能进去干嘛还要进去? 本笨方法的原理主要是利用登陆界面的一些程序入口,把它当成后门来使用,比如win7登陆界面上除了输密码的地 ...

  4. 封装UIlabel 辨别用户名 ,话题 ,链接,电话,高亮文字等

    概述 对UIlabel进行封装 用于辨别用户名 ,话题 ,链接,电话,高亮文字等,链接跳转网页,电话点击拨打电话,完美封装UIlabel,适合绝大多数需求 详细 代码下载:http://www.dem ...

  5. 原生php如何获取当前页面的url

    原生php如何获取当前页面的url? //php获取当前访问的完整url地址 function get_current_url(){ $current_url='http://'; if(isset( ...

  6. 用Visual Studio 2010开发Android应用

    在开发你的第一个Android应用程序之前,你应该先检查一下是否安装了Android SDK,以及是否创建好了Android模拟器(AVD),如果有不清楚的地方,请先看我以前发布的这篇文章“Andro ...

  7. JMeter学习笔记--创建数据库测试计划

    添加线程组(并发用户):线程数(10),Rame-Up Period(0), Loop Count(3) 线程组添加JDBC请求(配置元件):Variable Name(MySQL), Databas ...

  8. Android静态图片人脸识别的完整demo(附完整源码)

    Demo功能:利用android自带的人脸识别进行识别,标记出眼睛和人脸位置.点击按键后进行人脸识别,完毕后显示到imageview上. 第一部分:布局文件activity_main.xml < ...

  9. TCP/IP协议栈与数据报封装

    一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...

  10. Linux时间子系统(二) 软件架构

    一.前言 本文的主要内容是描述内核时间子系统的软件框架.首先介绍了从旧的时间子系统迁移到新的时间子系统的源由,介绍新的时间子系统的优势.第三章汇整了时间子系统的相关文件以及内核配置.最后描述各种内核配 ...