用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 >= )
{
if (regex.IsMatch(file.Name.Substring(, )))
{
//匹配规范返回真。
return true;
}
//否则返回假。
else
{
return false;
}
}
//否则返回假。
else
{
return false;
}
}
}
}
注释比较详细,就不解释啦。希望对你们的工作有帮助和启发。
运行结果就不截图啦~自己试一试就好。
用C# Winform做一个文件名批量修改器的更多相关文章
- 使用python做一个IRC在线下载器
使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...
- python:批量修改文件名批量修改图片尺寸
批量修改文件名 参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
- iOS --- DIY文件名批量修改
批量修改文件名: // 1.创建文件管理 NSFileManager *filemanager =[NSFileManager defaultManager]; // 2. 获得所有文件夹路径 NSS ...
- 用区块链技术做一个 不可被修改的 恋爱记录 app 我叫<<誓言>>
区块链技术 具有不可篡改,去中心化,共识机制等优秀的特性, 都用来做 代币钱包什么的.我觉得完全是浪费. 我的想法是用哪个区块做一个dapp 1 里面写着每个人的恋爱记录,爱情宣言. 2 一个人一生 ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- 用nodejs做一个svn密码修改页面
linux上配置好svn服务后,管理修改密码还得去手工修改passwd这个文件,略麻烦,其实网上应该有配套的web管理修改界面程序.但我想自己用nodejs写一个,因为用node不用配置复杂的服务器. ...
- 利用Django和装饰器做一个简单的修改密码页面
view视图代码: from django.shortcuts import render,redirect from django.http import HttpResponse from PIL ...
- 用C#做一个 拉流播放器
做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是 cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...
- rename 批量修改文件名
1.rename的用法 rename与mv的区别就是mv只能对单个文件重命名,而rename可以批量修改文件名 linux中的rename有两种版本,一种是C语言版的,一种是Perl版的.早期的Lin ...
随机推荐
- 〖Linux〗zigbee实验之cc2430移植tinyos2.x的步骤(Ubuntu13.10)
开发环境:Ubuntu13.10 1. 添加源,并安装tinyos-2.11:sudo gedit /etc/apt/sources.list #往里边添加deb http://tinyos.sta ...
- 以__name__进行单元测试
# -*- coding: utf-8 -*- #python 27 #xiaodeng #以__name__进行单元测试 #何为单元测试? #单元测试(模块测试)是开发者编写的一小段代码,用于检测被 ...
- samba温故知新
SAMBA服务器可以实现Windows主机和Linux主机共享资源互访的功能,即在Windows下可以通过网上邻居访问Linux操作系统中SAMBA服务器共享的文件夹,当然,Linux操作系统之间同样 ...
- OpenWrt的开机启动服务(init scripts)
参考 https://wiki.openwrt.org/doc/techref/initscripts 以一个简单的例子来说明 #!/bin/sh /etc/rc.common # Example s ...
- 转载:substr() mb_substr() mb_subcut区别与联系
substr() $rest = substr("abcdef", 1); //bcdef $rest = substr("abcdef", 1,5); //b ...
- java中写sql语句的小小细节
来源于:http://www.cnblogs.com/reine98/p/6180472.html 看如下一条sql语句 1 2 3 4 5 6 String sql="SELECT * F ...
- nginx error: upstream prematurely closed connection while reading response header from upstream
本篇文章由:http://xinpure.com/nginx-error-upstream-prematurely-closed-connection-while-reading-response-h ...
- HDUOJ--4565 So Easy!
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- java socket输入输出中文乱码问题
http://hi.baidu.com/linjk03/item/e2028bfd990c14ea1a111feb 统一了输入输出的编码格式,是不会有乱码问题出现的. 构造Reader或Write ...
- Android学习系列(5)--App布局初探之简单模型
人类科技的进步源自探索,探索来自于发现本原,当然App布局没这么先进,本文也只是一个归类总结.这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. Androi ...