Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

项目背景

应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器。

你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统上WinRAR或者好压软件一样的存在。

7-Zip软件下载与安装

网上下载相关安装包并完成安装,找到安装目录,复制7z.dll文件到D盘。

.bat文件的制作

通过7-Zip软件使用手册了解到,通过动态命令行调用7z.dll可以把文件压缩成.tar.gz格式的,实际上是先将文件压缩成.tar格式的文件,然后再把.tar格式的文件压缩成.gz格式的文件。

看如下代码:

a:在D盘新建两个文件夹,即WaitForCompress和Compressed

b:在D盘新建一个记事本文件,将如下代码复制进去,保存,退出,修改文件名为Run.bat

c:将7z.dll文件Copy到D盘与Run.bat在同一目录。

1 echo
2 cd /d D:\WaitForCompress
3 7z a -ttar -so * | 7z a -tgzip -si ..\Compressed\Compressed.tar.gz

.tar.gz文件的生成

双击Run.bat,可以实现将WaitForCompress文件夹中的文件压缩成.tar.gz格式的文件,并自动将压缩文件保存到Compressed文件夹中。

.tar.gz格式文件的验证

1:打开7-Zip软件,在7-Zip软件中打开Compressed.tar.gz文件;

2:选中Compressed.tar.gz文件,点击提取,选择提取到桌面;

3:在7-Zip软件中打开桌面Compressed.tar文件;

4:选中Compressed.tar文件,点击提取,选择提取到桌面;

最终两次解压后,得到我们最初压缩之前的文件。

Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

思路如下:

1:新建txt文件,将如下内容写入进去,保存退出,修改文件后缀为.bat;

2:调用Windows API函数执行.bat文件,即可得到.tar.gz文件。

 echo
 cd /d D:\WaitForCompress
 7z a -ttar -so * | 7z a -tgzip -si ..\Compressed\Compressed.tar.gz
procedure CreateTxtFile(FileName, V_str: string);
var
  F: Textfile; {定义 F 为 Textfile}
begin
  AssignFile(F, FileName); {将文件名与变量 F 关联}
  ReWrite(F); {创建Txt文档并命名为 “FileName ” }
  Writeln(F, V_str);
  Closefile(F); {关闭文件 F}
end;
//执行D:\Run.bat文件
WinExec(PChar(‘cmd.exe /k d:\run.bat‘), SW_HIDE);
//为防止异常等待一会,事件根据实际情况调整,也可以根据文件大小动态生成等待时间
Sleep(25000);

原文地址:https://www.cnblogs.com/jeremywucnblog/p/11437948.html

时间: 2024-11-03 01:26:52

Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件的相关文章

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

Windows如何压缩tar.gz格式

tar.gz 是linux和unix下面比较常用的格式,几个命令就可以把文件压缩打包成tar.gz格式然而这种格式在windows并不多见,WinRAR.WinZip等主流压缩工具可以释放解开,却不能打包生成.但是tar.gz在linux服务器端很常用,于是许多习惯用Windows的Web开发人员,可能会遇到这个压缩格式的麻烦.如何在windows系统生成tar.gz压缩包,在网上搜了一下除了复杂的命令行和开源软件之外,似乎没有其他的.偶然发现“7-ZIP”这个软件可以很方便地解决这个问题.具体

Golang调用windows下的dll动态库中的函数

Golang调用windows下的dll动态库中的函数 https://blog.csdn.net/xuduorui/article/details/78943331 原文地址:https://www.cnblogs.com/yuanjiangw/p/12196004.html

Windows系统下nodejs安装及配置

关于nodejs中文站,眼下活跃度最好的知识站应该是http://www.cnodejs.org/ ,而http://cnodejs.org/则活跃度较低.Express.js是nodejs的一个MVC开发框架,而且支持jade等多种模板,是Node.js上最流行的Web开发框架.这几天刚接触PhoneGap,曾经也看了一些nodejs的基础但苦于时间有限一直没机会亲自搭建一个nodejs环境,今天周末,部署了PhoneGap到Android,顺便一同搭建了一下nodejs本地环境,自己的操作过

VB调用API函数

API函数快速入门--怎样在VB中声明和使用API函数-- 一.在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的 General部分声明它: 声明的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用. 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中 声明了. 先添加

Windows系统下Ant自动编译打包并签名Android应用——实践篇

1.背景 项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦.于是想起了之前探索过的Ant自动签名打包.查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用--探索篇,边动手边复习.但是后面遇到了一大串的问题... 2.问题解决过程 1).libs库中的第三方包 如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题. 2).

windows系统下简单nodej.s环境配置 安装

国内目前关注最高,维护最好的一个关于nodejs的网站应该是http://www.cnodejs.org/ windows系统下简单nodejs环境配置. 第一步:下载安装文件 下载地址:官网 https://nodejs.org/en/download/   这里用的是  第二步:安装nodejs 下载完成之后,双击 node-v6.9.1-x64.msi,开始安装nodejs,默认是安装在C:\Program Files\nodejs下面 第三步:安装相关环境 打开C:\Program Fi

windows系统下跨平台开发环境的搭建(cordova)+创建一个android项目

目的:在windows系统下,搭建跨平台的开发环境(cordova)创建一个安卓项目 前提:安装有java Jdk 1.8以上 Android SDK 23以上 1.安装node.js ,选择对应的版本下载安装,没什么好说的 官方网址:http://nodejs.cn/ 2.测试安装是否成功 win+r 键,打开运行窗口,输入cmd,然后确定,打开命令行窗口 输入node  -v 输出版本号,说明node.js安装成功,否则请查找原因,或者重新安装 输入npm -v 输出版本号说明npm可以使用

Windows系统下Android开发环境搭建

“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.eclipse的安装 3.Android SDK 的安装 4.Android ADT插件的安装 ---------------------------------------------------------------------------------------------------------