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 .…

[转].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二次开发和数据库系统开发,具有丰富的行业经验,致力于…

数据库备份需要注意的

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

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

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

dotnet-exec 0.4.0 released

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

.NET in China - What's New in .NET

点击蓝字关注我们编辑:Alan Wang排版:Rani Sun活动介绍去年11月,.NET 6 的发布,为我们带来了 .NET 多平台应用 UI(.NET MAUI)。就在前不久,.NET MAUI 已正式发布。未来,作为 .NET 7 …

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

使用 Anet 有一段时间了,已经在我的个人网站(如 bookist.cc)投入使用,目前没有发现什么大问题,所以才敢写篇文章向大家介绍。 GitHub 地址: https://github.com/anet-team/anet Anet 是一个 .NET Core 通用…

强烈推荐国内几款优秀的开源电商系统

一、背景需求 我玩得好的朋友刚创业,搞电商最一块,想做个全套的电商框架系统,希望支持公众号、小程序、H5、pc后台管理等功能,创业初期资金非常紧张,请开发人员做成本太高,然后就咨询我,有没有最…

Maui的学习之路(二)--设置

Maui的学习之路(二) -- 设置上一篇我们做了Maui的基本介绍,理论上这一篇应该会创建第一个Maui的应用,以便对此进行详细的评估,并逐步深入。如果你需要进行Maui首个应用的创建,那么欢迎访问.NET MAUI 创建移…

今天,Java编程周末提高班(第一期)正式结束

Java编程周末提高班(第一期),走过了近两个月历程,一共同拥有68人次学生周末到老师家进行Java学习与交流。近距离的和一群年轻的学习接触,收获非常多,特别是对以后教学的改进。在学习的闲暇。大家自己做饭&a…

基本反射了解

1 package cn.wh;2 /**3 * java.lang.Class4 * author 王恒5 * time 2016年11月2日 上午10:39:256 */7 public class RedlectTest {8 public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {9 …

[转]让.NET应用秒变微服务

随着近年来微服务的发展,许多团队开始将自己的单体应用改造为微服务。通常Java或Go的应用可以通过业界已有的微服务框架作为微服务开发和改造的底座,封装掉解决跨网络问题带来的复杂性。但以Chassis模式进行的微服务改造有两大问题:多语言框架…

WPF 使用 MAUI 的自绘制逻辑

这是一个当前还没开发完成的功能,准确来说连预览版也算不上的功能。我原本以为 MAUI 是无法在 WPF 上面跑的,然而在看完了 MAUI 整个大的设计,才了解到,原来 MAUI 是一个非常庞大的开发项目。在 MAUI 里面,虽然现在是正…

[转]redis 5.0.5 5分钟搭建redis集群

环境:centos 7 1:下载并安装redis ​​​​​​​$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz$ cd redis-5.0.5$ make redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功,并且redis…

Window.document对象

一、找到元素: docunment.getElementById("id");根据id找,最多找一个; var a docunment.getElementById("id");将找到的元素放在变量中; docunment.getElementsByName("name")&am…

C# 读写文件从用户态切到内核态,到底是个什么流程?

一:背景 1. 一个很好奇的问题我们在学习 C# 的过程中,总会听到一个词叫做 内核态 ,比如说用 C# 读写文件,会涉及到代码从 用户态 到 内核态 的切换,用 HttpClient 获取远端的数据,也会涉及到 用户态 到 内核…

【土地评价与土地管理】案例:某地区土地农业利用潜力评价

文章目录 一、确定评价单元二、拟定潜力评价系统表、确定指标权重三、指标评价四、评定潜力等级五、得出潜力评价结果一、确定评价单元 土地潜力评价单元采用地块作为评价单元,此地块是建立在土地利用现状的基础上, 综合土地的自然属性来确定,评价单元界线与土地现有界线基本…

code point,code unit

2019独角兽企业重金招聘Python工程师标准>>> 从一段API描述谈起: 在String的length的API中描述是这样的! lengthpublic int length() Returns the length of this string. The length is equal to the number of 16-bit Unicode characters i…