因为喜欢在网上下载一些资源,而很多不那么正规的资源喜欢更改后缀防止审查,手动一个一个改比较麻烦,网上找的工具也不太放心,所以自己用vs+qt写了个小工具,功能很简单,代码也少,所以放在这里供大家学习讨论。

使用软件是vs2013+qt5.3.1,虽然生成了release版本,但是没安装vs的可能还是无法运行

1.功能介绍

android find以后批量替换 android批量修改后缀名工具_qt

菜单栏功能已经添加。2022.7.8

中间的白框会显示当前要修改的文件的详细地址,支持将文件拖拽到框里修改,或者点击打开文件选择要修改的文件。

需要更改的后缀写在更改后缀框里,默认是rar,需要注意的是如果原文件没有后缀需要将对应项打勾,不然可能会出现不可预见的bug,以后可能会改(在改了在改了,咕咕)

后缀bug已经修复2022.7.8

最后点击开始更改就行了。

2. 源代码如下:

rename.cpp
#include "rename.h"
#include "QMessageBox"
#include "QFileDialog"
#include "QDebug"

ReName::ReName(QWidget *parent)
: QMainWindow(parent)
{
	ui.setupUi(this);
}

ReName::~ReName()
{

}
//打开文件按钮
void ReName::on_pushButton_Open_clicked(){

	int i = 0;
	//定义文件对话框类
	QFileDialog *fileDialog = new QFileDialog(this);
	//定义文件对话框标题
	fileDialog->setWindowTitle(tr("打开文件"));
	//设置默认文件路径
	fileDialog->setDirectory(".");
	设置文件过滤器
	//fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
	//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
	fileDialog->setFileMode(QFileDialog::ExistingFiles);
	//设置视图模式
	fileDialog->setViewMode(QFileDialog::Detail);
	//打印所有选择的文件的路径

	if (fileDialog->exec())
	{
		fileNames = fileDialog->selectedFiles();
	}

	while (i < fileNames.size())
	{
		ui.textBrowser->append(fileNames[i]);
		i++;
	}


}

//清空按钮
void ReName::on_pushButton_Clear_clicked(){
	ui.textBrowser->clear();
}

//开始更改按钮
void ReName::on_pushButton_Start_clicked(){
	QString m_tail;
	QString m_path;
	QString n_point = ".";
	int m_index;
	int i = 0;
	int m_ok = 1;
	int m_ok_1 = 1;
	m_tail = ui.lineEdit->text();
	QMessageBox msgBox_good;   // 生成对象

	if (ui.checkBox->isChecked())
	{
		while (i < fileNames.size())
		{
			m_path = fileNames[i];
			m_path += n_point;
			m_path += m_tail;
			bool OK = QFile::rename(fileNames[i], m_path);
			if (!OK)
				m_ok = 0;
			i++;
		}
		if (m_ok)
		{
			msgBox_good.information(NULL, "Tip!", "Success!");    // 设置文本
		}
		else
		{
			msgBox_good.information(NULL, "Tip!", "Fail!");    // 设置文本
		}
	}
	else
	{
		while (i < fileNames.size())
		{
			m_path = fileNames[i];
			m_index = m_path.indexOf(n_point);
			m_path = m_path.replace(m_index + 1, 65535, m_tail);
			bool OK = QFile::rename(fileNames[i], m_path);
			if (!OK)
				m_ok_1 = 0;
			i++;
		}
		if (m_ok_1)
		{
			msgBox_good.information(NULL, "Tip!", "Success!");    // 设置文本
		}
		else
		{
			msgBox_good.information(NULL, "Tip!", "Fail!");    // 设置文本
		}
	}

	//qDebug() << m_path << endl;
	//qDebug() << m_index << endl;
}



void ReName::dragEnterEvent(QDragEnterEvent*event){
	//接受拖动。
	event->acceptProposedAction();
}

//放下事件
void ReName::dropEvent(QDropEvent*event){
	int i = 0;
	int a = 0;
	fileNames.clear();
	const QMimeData*qm = event->mimeData();//获取MIMEData
	//qm->urls()[0].toLocalFile();//.toLocalFile()是获取拖动文件的本地路径。
	a = qm->urls().size();
	while (i<a)
	{
		fileNames.append(qm->urls()[i].toLocalFile());
		ui.textBrowser->append(fileNames[i]);
		i++;
	}
	
	
	
}
rename.h

#ifndef RENAME_H
#define RENAME_H

#include <QtWidgets/QMainWindow>
#include "ui_rename.h"
#include<QDragEnterEvent>
#include<QMimeData>
#include<QDropEvent>
#include<QUrl>

class ReName : public QMainWindow
{
	Q_OBJECT

public:
	ReName(QWidget *parent = 0);
	~ReName();
	QStringList fileNames;

private:
	Ui::ReNameClass ui;
	void dragEnterEvent(QDragEnterEvent*event);//拖动进入事件
	void dropEvent(QDropEvent*event);


private slots:
	void on_pushButton_Open_clicked();
	void on_pushButton_Clear_clicked();
	void on_pushButton_Start_clicked();
};

#endif // RENAME_H

修复版完整代码我上传了gitee码云,地址如下:后期文章代码不会更新,在gitee上更新最新版

文件后缀批量修改: 文件后缀名的批量修改 (gitee.com)