windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

1、 需求

我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压缩这个文件夹,上传资源到百度网盘。

2、思路

1)、windows环境用python来实现,能实现生成同名文件夹,然后拷贝文件的时候中文名的文件拷贝都文件夹有问题,估计是编码格式不对,对python不是很熟悉,然后放弃python来处理。

2)、用java来实现,遍历加密文件,然后创建同名(不带后缀)的文件夹,然后把这个加密文件拷贝到这个文件夹,然后删除加密文件,再拷贝图片和文本到这个加密文件夹。

3、具体代码实现过程

1)、批量加密文件

windows环境批量加密文件,我们在需要加密的文件目录新建1.bat文件,内容如下

for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%~dpnX.7z" "%%X" -pcch1233nxecc -mhe -mx=0

注意这里-p后面是密码,这里的密码是cch1233nxecc,用户可以自己设置,点击1.bat就能加密批量压缩。

2)、把压缩成7z的文件手动拿出来,放到一个文件夹里面去,我放在这个目录

F:\didi1\all11_30\C++

3)、用java代码实现创建文件夹,然后放拷贝文件进去,然后删除加密文件,然后拷贝具体图片和文本文档到这个文件夹,解压密码图片和文本地址如下

F:\\didi1\\all11_30\\解压密码.png
F:\\didi1\\all11_30\\计算机40多个方向1000多个电子书.txt

代码实现如下

package com.chenyu;import java.io.File;public class Test {public static void main(String[] args)  {System.out.println("chen"); String path = "F:\\didi1\\all11_30\\C++";File decodePwdPngFile = new File("F:\\didi1\\all11_30\\解压密码.png");File txtFile = new File("F:\\didi1\\all11_30\\计算机40多个方向1000多个电子书.txt");FileUtil.handleFile(path, decodePwdPngFile, txtFile);}}

FileUtil.java文件如下 

package com.chenyu;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.channels.FileChannel;public class FileUtil {/*** 创建新的文件夹* @param file* @return*/public static String getNewDirectoryPath(File file) {if (file == null)return "chenyu";String dirPath = file.getAbsolutePath() + File.separator + file.getName();if (dirPath.contains(".")) {int index = dirPath.indexOf('.');dirPath = dirPath.substring(0, index);} else {dirPath = dirPath + "1";}return dirPath;}/*** 处理文件,创建文件夹,然后拷贝文件进去* @param path*/public static void handleFile(String path, File decodePwdPngFile, File txtFile) {if (path == null || "".equals(path) || decodePwdPngFile == null || txtFile == null)return;File file = new File(path);if (!file.exists())return;File[] files = file.listFiles();if (files == null || files.length == 0)return;try {for (File childFile : files) {if (childFile.isDirectory()) {System.out.println("文件夹路径是:" + childFile.getAbsolutePath());handleFile(childFile.getAbsolutePath(), decodePwdPngFile, txtFile);} else {System.out.println("文件路径是:" + childFile.getAbsolutePath());if (childFile.getAbsolutePath() == null)return;if (childFile.getName() == null)return;//得到新的目录String dirPath = getNewDirectoryPath(childFile);System.out.println("dirPath路径是:" + dirPath);File fileDir = new File(dirPath);//创建新的目录if (!fileDir.exists()) {fileDir.mkdirs();}//构建资源zip文件File fileTmp = new File(dirPath, childFile.getName());if (!fileTmp.exists()) {fileTmp.createNewFile();}//复制资源zip文件到新的文件夹copyFile(childFile, fileTmp);//删除zip文件childFile.delete();//拷贝图片到这个dirPath目录来File decodePwdPng = new File(dirPath, "解压密码.png");if (!decodePwdPng.exists()) {decodePwdPng.createNewFile();}copyFile(decodePwdPngFile, decodePwdPng);//拷贝txt文件到这个dirPath目录来File newTxtFile = new File(dirPath, "计算机40多个方向1000多个电子书.txt");if (!newTxtFile.exists()) {newTxtFile.createNewFile();}copyFile(txtFile, newTxtFile);}}} catch (Exception e) {e.printStackTrace();}}/*** 文件复制* @param srcFile* @param dstFile* @throws IOException*/public static void copyFile(File srcFile, File dstFile) throws IOException {if (srcFile == null || !srcFile.exists()) {return;}if (dstFile == null || !dstFile.exists()) {return;}FileInputStream fileIns = null;FileOutputStream fileOuts = null;FileChannel source = null;FileChannel destination = null;try {fileIns = new FileInputStream(srcFile);fileOuts = new FileOutputStream(dstFile);source = fileIns.getChannel();destination = fileOuts.getChannel();destination.transferFrom(source, 0, source.size());} catch (Exception e) {e.printStackTrace();} finally {if (fileIns != null)fileIns.close();if (fileOuts != null)fileOuts.close();if (source != null)source.close();if (destination != null)destination.close();}}
}

  控制台打印

chen
文件路径是:F:\didi1\all11_30\C++\C++ Primer Plus中文版.7z
dirPath路径是:F:\didi1\all11_30\C++\C++ Primer Plus中文版
文件路径是:F:\didi1\all11_30\C++\C专家编程.7z
dirPath路径是:F:\didi1\all11_30\C++\C专家编程
文件路径是:F:\didi1\all11_30\C++\C和指针(第二版)高清.7z
dirPath路径是:F:\didi1\all11_30\C++\C和指针(第二版)高清
文件路径是:F:\didi1\all11_30\C++\C语言深度解剖.7z
dirPath路径是:F:\didi1\all11_30\C++\C语言深度解剖
文件路径是:F:\didi1\all11_30\C++\C陷阱与缺陷.7z
dirPath路径是:F:\didi1\all11_30\C++\C陷阱与缺陷
文件路径是:F:\didi1\all11_30\C++\Effective C  中文版.7z
dirPath路径是:F:\didi1\all11_30\C++\Effective C  中文版
文件路径是:F:\didi1\all11_30\C++\Effective C++(第三版中文版).7z
dirPath路径是:F:\didi1\all11_30\C++\Effective C++(第三版中文版)
文件路径是:F:\didi1\all11_30\C++\Effective STL(中文版).7z
dirPath路径是:F:\didi1\all11_30\C++\Effective STL(中文版)
文件路径是:F:\didi1\all11_30\C++\LinuxC编程一站式学习.7z
dirPath路径是:F:\didi1\all11_30\C++\LinuxC编程一站式学习
文件路径是:F:\didi1\all11_30\C++\More Effective C++.7z
dirPath路径是:F:\didi1\all11_30\C++\More Effective C++
文件路径是:F:\didi1\all11_30\C++\STL源码剖析(侯捷译).7z
dirPath路径是:F:\didi1\all11_30\C++\STL源码剖析(侯捷译)
文件路径是:F:\didi1\all11_30\C++\UNIX编程艺术(中文).7z
dirPath路径是:F:\didi1\all11_30\C++\UNIX编程艺术(中文)
文件路径是:F:\didi1\all11_30\C++\中文版:C++Primer(第三版).7z
dirPath路径是:F:\didi1\all11_30\C++\中文版:C++Primer(第三版)

这里就可以得到我们的结果了

 

但是我们还需要再把这个文件夹批量不加密压缩,我们依然还是新建2.bat,内容如下

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"

点击2.bat文件,效果如下

这里的内容就是我们需要的内容,然后我们需要批量单个上传,我有工具,非常方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET7之MiniAPI(特别篇) :Preview5优化了JWT验证(上)

在.NET7的Preview5中,优化了asp.net core中的JWT验证,不用像以前繁琐了,更重要的是带来了一组生成Token的工具,可以让开发人员或测试人员不需登录获取Token,而达到测试的目的。创建项目现在来看一下怎么使用&#xff0…

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier,是字符串,格式标识符。 根据UTI,可得到相应的其他类型的格式标识符。比如public.jpeg对应于: A four-character file type code (an OSType) of JPEGA filename extension of .…

【Inpho精品教程】任务一:Inpho预处理准备(Pix4d生成未畸变图像、Pix4d生成相机参数文件)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho软对于初学者来说,可能不像pix4d、PhotoScan等那么得心应手,处理过程也稍微有些复杂。Inpho处理的是POS分离的照片,在新建工程之前,需要获取相机参数、未畸变图像等,而这些前期的工作一…

学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点

Add an Arbiter to Replica Set 在集群中加入仲裁节点,当集群中主节点挂掉后负责选出新的主节点,仲裁节点也是一个mongo实力,但是它不存储数据。 1、仲裁节点消耗很小的资源,而且不需要专用的服务器。 2、不能把仲裁节点安装到集…

[转]new Thread的弊端及Java四种线程池的使用

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。 1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {Overridepublic void run() …

【Inpho精品教程】任务二:Inpho创建工程(创建项目、新建相机参数、导入照片、导入POS、生成航条、保存项目)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 在任务一中,我们做了Inpho创建工程前的数据预处理工作,获取了未畸变的图像、相机参数、Inpho支持的POS等数据,本文在此基础之上,创建Inpho工程,主要步骤有:创建项目、新建相机参数、导入照片…

return view详解

1、return View(); 返回值 类型:System.Web.Mvc.ViewResult将视图呈现给响应的 View() 结果。 注释 View() 类的此方法重载将返回一个具有空 ViewName 属性的 ViewResult 对象。 如果你正在编写控制器操作的单元测试,则需为那些不采用字符串视图名称的单…

C语言试题九十一之写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。

1、题目 写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。 2 、温馨提示 C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问…

C# 切换中英文输入法

本文经原作者授权以原创方式二次分享,欢迎转载、分享。原文作者:唐宋元明清原文地址:https://www.cnblogs.com/kybs0/p/10298697.htmlC# 切换中英文输入法在界面输入时,有时需要限定输入法。在不自定义正则表达式或者其它输入处理…

[转].NET 开源项目 Polly 介绍

今天介绍一个 .NET 开源库:Polly,它是支持 .NET Core 的,目前在 GitHub 的 Star 数量已经接近 5 千,它是一个强大且实用的 .NET 库。 Polly 介绍 官方对 Polly 的介绍是这样的: Polly is a .NET resilience and tran…

「 刘一哥GIS」CSDN专业技术博文专栏目录索引

刘一哥GIS 个人简介:刘一哥,多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用,精通ArcGIS等软件的应用,精通多门编程语言,擅长GIS二次开发和数据库系统开发,具有丰富的行业经验,致力于…

memcached 和 redis 的区别与选择

没有必要过多的关注性能。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储…

C语言试题九十之实现输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 输入一行字…

数据库备份需要注意的

2019独角兽企业重金招聘Python工程师标准>>> 1、PHPMYADMIN无法导出大数据表的 如果你的数据库中有上百个数据表,并且有很多数据表记录都超过了1G,还有很多INNODB数据表,这个时候用PHPMYADMIN导出,你就会发现恢复后可能…

在 .NET 6 中使用 dotnet format 格式化代码

我不得不承认,在 code review 的时候,我花费了很多时间来研究 C# 的代码格式问题,这是没有太大意义的工作,我应该专注于其他事情,而不是观察同事是否忘记格式化代码,或者是使用了其他不同规则的代码编辑器。…

【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS)

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

[转]数据库事务ACID特性

ACID特性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性&#xff…

dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 releasedIntrodotnet-exec 是一个 C# 程序的命令行小工具,可以用来运行一些简单的 C# 程序而无需创建项目文件,而且可以自定义项目的入口方法,支持但不限于 Main 方法Install/Updatedotnet-exec 是一个 dotnet tool&#x…

【天工Godwork精品教程】任务二:导入控制点、POS权重设置、连接点分布检查、自由空三

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串

​ ✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 输入 输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行,每行包括一…