因为喜欢在网上下载一些资源,而很多不那么正规的资源喜欢更改后缀防止审查,手动一个一个改比较麻烦,网上找的工具也不太放心,所以自己用vs+qt写了个小工具,功能很简单,代码也少,所以放在这里供大家学习讨论。
使用软件是vs2013+qt5.3.1,虽然生成了release版本,但是没安装vs的可能还是无法运行
1.功能介绍
菜单栏暂时没用,因为功能太少了没啥必要,以后可能会加。
中间的白框会显示当前要修改的文件的详细地址,支持将文件拖拽到框里修改,或者点击打开文件选择要修改的文件。
需要更改的后缀写在更改后缀框里,默认是rar,需要注意的是如果原文件没有后缀需要将对应项打勾,不然可能会出现不可预见的bug,以后可能会改(在改了在改了,咕咕)
最后点击开始更改就行了。
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.com)
或者不会用码云,我也上传了csdn,大佬不差积分可以看看:
ReName.rar批量修改文件后缀名-C++文档类资源-CSDN文库
|