1,简介

UDiskCopy :U盘批量复制工具

开发背景:
公司出货时软件安装包及其他电子档文件,是采用定制的小容量U盘存储的,
之前是生产人员一个一个手动拷贝到各个U盘,现在量增大,一次要出几十上百个备用,
于是买了USB HUB,搭配该工具用于批量复制,提高制作效率。

2,界面截图

3,主要代码

MainWindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();protected:void timerEvent(QTimerEvent *event);private slots:void on_btnBrowse_clicked();void on_btnCopy_clicked();private:void RefreshList();QStringList GetRemovableDisks();private:Ui::MainWindow *ui;int mTimer;
};#endif // MAINWINDOW_H

MainWindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QStandardPaths>
#include <QDebug>
#include "Windows.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);//如果桌面存在指定名称的文件夹,直接自动帮填上。//平常就把最新安装包放在该文件夹,那么启动软件只需要直接点"复制"就行QString dir = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + QStringLiteral("/上位机软件");if(QFile::exists(dir)){ui->lineEdit->setText(dir);}RefreshList();mTimer = startTimer(1000);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::timerEvent(QTimerEvent *event)
{if(mTimer = event->timerId()){//每秒刷新一次可移动磁盘列表RefreshList();}
}void MainWindow::on_btnBrowse_clicked()
{//选择要被复制的文件夹QString dirDesk = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);QString dir = QFileDialog::getExistingDirectory(this, QStringLiteral("选择文件夹"), dirDesk);if (QFile::exists(dir)){ui->lineEdit->setText(dir);}
}void MainWindow::on_btnCopy_clicked()
{QString dir = ui->lineEdit->text();if(!QFile::exists(dir)){return;}QStringList disks = GetRemovableDisks();foreach (QString disk, disks){//复制文件夹内文件(不递归)QDir qdir(dir);foreach(QString name, qdir.entryList(QDir::AllEntries)){QString path = dir + "/" + name;QFileInfo fi(path);if(fi.isFile()){QFile::copy(path, disk + "/" + name);}}}
}void MainWindow::RefreshList()
{//刷新可移动磁盘列表ui->listWidget->clear();ui->listWidget->addItems(GetRemovableDisks());
}QStringList MainWindow::GetRemovableDisks()
{//枚举可移动磁盘QStringList disks;char szDriver[3];for (int i = 'C'; i <= 'Z'; i++){szDriver[0] = i;szDriver[1] = ':';szDriver[2] = 0;UINT uType = GetDriveTypeA(szDriver);if (uType == DRIVE_REMOVABLE){//qDebug()<< "find" << (char)i;disks.append(QString("%1:").arg((char)i));}}return disks;
}

4,源码下载

配套源码,在群文件免费下载:

群号码:1149411109

群名称:Qt实战派学习群

QT写的U盘批量复制小工具相关推荐

  1. 百度网盘批量重命名工具怎么用,百度网盘怎么批量修改文件名

    这里写百度网盘批量重命名工具怎么用,百度网盘怎么批量修改文件名自定义目录标题 很多时候,我们百度网盘里的文件需要重命名,方便我们整理文件.如果一个一个修改,很费时费力,那么,有没有百度网盘批量重命名工 ...

  2. 使用Qt写一个简单的五子棋单机小游戏

    使用Qt写一个简单的五子棋单机小游戏 刚学,不够专业请勿喷,有不对的地方还请指出,我渴望进步!现在贴出这个游戏我原创的所有代码.希望可以帮到有需要的人. 游戏界面: 因为后面添加了.wav的音频文件, ...

  3. BPFT1.7,全名BaiduPanFilesTransfers免费的百度网盘批量转存工具【精】

    BaiduPanFilesTransfers 介绍使用 免费的百度网盘批量转存工具,基于Python 3.8+Tkinter 详细介绍使用请访问:小众软件 缺点及推荐 目前缺点是不能传大数量的链接!目 ...

  4. 用python3+ PyQt5写一个NFC模块的串口小工具的一星期

    用python3+ PyQt5写一个NFC模块的串口小工具的一星期 原因始于我们的小团队,没有写Windows上位机的人才.自己的[NFC读读写模](https://shop165836966.tao ...

  5. Nodejs批量处理图片小工具:批量修改图片信息

    git:GitHub - xiaoli0510/ImgToolNode: Nodejs批量处理图片小工具 小工具一:批量修改文件夹里面的图片名称 步骤: 1.安装nodejs. 2.根据需要修改edi ...

  6. 百度网盘批量改名字工具

    百度网盘批量改名字工具,不用再一个一个改了 链接:https://pan.baidu.com/s/1LRWxi4qVK9dmz-4StCiwBQ  提取码:0ers

  7. 写了个MySQL数据备份小工具,放出来跟大家分享一下,欢迎拍砖。

    自己写了个MySQL数据备份小工具,放出来跟大家分享一下,欢迎拍砖. 因为数据库中有blob类型的字段,用SQLyog等工具备份出的脚本都是乱码,没办法导入,可是又经常要备份MySQL数据库,以前一直 ...

  8. EXCEL批量复制小技巧,赶紧存起来!

    EXCEL批量复制: 1.选中A1列单元格 ctrl+c复制 备用 2.在左上角的单元格名称,如:A1:假设要复制5000行,则输入:A1:A5000 按回车键 Enter 此时会选中A1到A5000 ...

  9. switchyomega规则列表备份_求人不如求己,自己动手写一个CSDN博客备份小工具?...

    前提概要 背景 因为笔者在上个月的时候,突然想扩展一下技术栈,不能仅仅局限于Java,还是得掌握一门工具语言,不然显得太low.所以也就对Python和Golang类的语言有了一些兴趣.也就在上个月简 ...

  10. Jar批量管理小工具

    文章目录 前言 一.代码结构 二.开源仓库地址 总结 前言 一个Jar包管理的小工具,目前有如下几个作用,后面可以慢慢扩展 1.搜索当前项目路径下的所有jar并复制到某一路径下 2.执行某个目录下的j ...

最新文章

  1. linux文件夹前的描述,Linux对内存结构的描述
  2. 跟我学爬虫-1-爬虫简介
  3. 洛谷P1546 最短网络 Agri-Net
  4. 用DocumentFragments或innerHTML取代复杂的元素注入
  5. java反射创建对象_java8反射创建对象
  6. 新认知,新力量!神策 2021 数据驱动大会来了
  7. Linux Shell——-if -eq,if -ne,if -gt[笔记]
  8. graph面板x轴模式包括哪些_发那科数控车床面板讲解
  9. python中扑克牌类设计_Python中的计数 Counter类
  10. c primer英文版第5版_2019足坛10大巨星:梅西第2范戴克第3,C罗第5
  11. 某音爆火,人物头像动漫化,为女朋友打造独一无二的头像【python实战:人物图片动漫化】
  12. 消息中间件→产生原因、JMS与AMQP、主流消息中间件、基本概念、ActiveMQ、集群、实际场景问题解决方案、集成rabbitMQ与kafka
  13. 计算机中的方法,计算机中文本的表示方法
  14. VS2017 winform 打包(使用 Microsoft Visual Studio 2017 Installer Project)
  15. ad一张图纸绘制多图_你知道,为什么工程图纸都是蓝图纸,而不是白色黄色红色?...
  16. 怎么在长方体上挖孔_被雷军狂喷的挖孔屏到底好不好?分析你必须知道的优缺点!...
  17. MATLAB遇到问题:MATLAB2020以上版本代码拷到其他低版本电脑出现中文乱码的解决方案
  18. vs2017下载教程
  19. 一般PCB基本设计流程说明
  20. c语言开发gc,GC的基本原理

热门文章

  1. Adobe全家桶2022版官方正版来啦~~
  2. PayPal支付时出现“该商家目前无法接受PayPal付款。请稍后重试,或返回商家页面并选择其他付款方式。”
  3. uni-app:自定义vue模板
  4. 实战之8051驱动8位数码管
  5. linux 消息队列API
  6. python3.8安装pyltp
  7. 激光共聚焦显微镜原理
  8. c语言计算燃烧温度,f与c温度换算(温度f和c换算计算器)
  9. 机器学习算法工程师面试问题
  10. 基于java(ssm)校园办公室报修管理系统(java毕业设计)