有人大致说过这样的话:如果有一件工作你每天都做,而且每天在这件事是耗时超过90S,那么你就需要让机器来做了。

我最近几个月每天都会给别人打升级包,从不同的地方获取10个不同的文件,这些破文件来自不同的人。打包时需要把文件放到不同的目录下或者不同的压缩包中。由于我们的设备是QNX设备,其压缩包采用的是tar.gz的压缩格式,而我安装的压缩软件HaoZip不支持直接将文件拖拽入.tar.gz包中,需要解压、压缩。每天耗时绝对超过10分钟,于是就不得不搞一搞DOS批处理,以前是懒的写(可能内心觉得自己做不好),写完才知道,原来批处理才是最好的偷懒啊。

以下是本次的主要知识点:

知识点:

获取当前脚本的路径:

setcurrent_path=%cd%

打印变量值(引用变量值)

echo%current_path%

从控制带获取变量值

SET/P variable=[promptString]

eg:

set/p project_name=Input project name, such as XXXX:

if语句(注意空格):

a.判断字符串是否为空

eg:

if"%project_name%"=="" (

echo#####error:Project name is NULL && goto error_Delete_Output

)

b.判断文件是否存在,连字符&&:

eg:

ifnot exist  %MCU_DIRECTORY% ( echo%MCU_DIRECTORY% not exist ! && goto error_Exit)

删除文件夹(文件夹中亦有文件夹)

echoy|DEL %OUT_DIRECTORY%\*.* && echo y|RD /S %OUT_DIRECTORY%

判断文件夹是否为空:

dir/a /b %current_path%\%MCU_DIRECTORY%|findstr .* >nul||echo Warning:input_MCUdirectory is empty && goto error_Exit

XCOPY,将指定目录连文件和目录结构一起拷贝(/E:复制目录和子目录,包括空的;/Y:直接覆盖):

XCOPY/E /Y .\%OS_DIRECTORY%\* .\%OUT_DIRECTORY%\ && echo copy os packet over

copy单个文件(注意路径中的斜线):

copy%MPU_DIRECTORY%\base_packet\base.tar.gz%OUT_DIRECTORY%\update\packets\base.tar.gz && echo copy base packetover

.tar.gz文件解压(HaoZip-好压)

rem 设置压缩软件路径

setcompression_software=D:\Program Files\2345Soft\HaoZip\

rem 切换到压缩软件路径

cd/d %compression_software%

rem 将base.tar.gz解压输出到%current_path%\output\update\packets\

HaoZipCx %current_path%\output\update\packets\base.tar.gz-o%current_path%\output\update\packets\

.tar.gz文件的压缩

rem 切换到压缩软件路径

cd/d %compression_software%

rem 将%current_path%\output\update\packets\*所有内容打包为一个tar包

HaoZipCa -ttar %current_path%\output\update\packets\%project_name%.tar      %current_path%\output\update\packets\*

HaoZipCa -tgzip %current_path%\output\update\packets\%project_name%.tar.gz  %current_path%\output\update\packets\%project_name%.tar

PS:

最近越发觉得自己的水平接近于一位同龄同事五年前(此子大三)的水平:”不滞于物,草木竹石均可为剑。自此精修,渐进于无剑胜有剑之境“。当然自己现在还滞于各种物,但终觉其有迹可循,许是错觉吧,哈哈。

嗯,短短100行的批处理,我居然断断续续用了三天,打脸!

Window批处理自动打包升级包相关推荐

  1. vite项目在jenkins自动打包报错:failed to load config from ../vite.config.js You installed esbuild on

    vite项目在jenkins自动打包报错找不到esbuild-linux-64 在window环境开发用的找不到esbuild-windows-64,在linux环境构建需要使用esbuild-lin ...

  2. Serendipity 自动打包上传、Xcode相关文件管理

    Serendipity Serendipity 是集自动打包上传.描述文件管理.崩溃日志解析.符号表解析.自动配置iOS真机调试包功能为一体的mac应用 代码主要用SwiftUI编写.纯本地工具管理类 ...

  3. xcodebuild和xcrun实现自动打包iOS应用程序

    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...

  4. 基于WinRAR软件的文件自动打包与异地备份方案

    WinRAR作为一款解压缩软件,可以通过命令行,使用批处理功能使其变成一款文件自动打包备份的工具,通过共享文件夹方式还可以实现重要文件的多服务器自动备份功能. 一.首先确保服务器上安装了WinRAR专 ...

  5. Android——Gradle自动打包上传蒲公英并进行钉钉群提醒

    开发测试阶段频繁打包未免太过枯燥,自动打包发布解放双手.上一节我们分析了fastlane打包发布的过程,嗯~总体来说有点繁琐,而且Android使用fast lane自动打包网上资料比较少,出错之后解 ...

  6. ios 自动打包命令_iOS自动打包上传脚本

    自从将swift2.2升级到swift3.0, 每次使用Xcode8编译都很慢,很是不爽,于是有了研究下xcodebuild命令行打包的想法,起初不知道用shell,还是用python, 在网上大概搜 ...

  7. fastlane自动打包--详细介绍

    fastlane--Packaging 自动化打包,通过fastlane自动发布 Fastlane安装不在这里详细罗列,参照一下链接流程 https://www.jianshu.com/p/0a113 ...

  8. [原] Jenkins Android 自动打包配置

    一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...

  9. jenkins自动打包设置打包文件脚本

    jenkins自动打包.user.js // ==UserScript== // @name jenkins自动打包 // @namespace http://tampermonkey.net/ // ...

最新文章

  1. 8.5 特征选择-机器学习笔记-斯坦福吴恩达教授
  2. .net中的mapinfo开发:准备(一)
  3. Spring Cloud Eureka 入门 (二)服务提供者详解
  4. 分享WCF文件传输---WCFFileTransfer
  5. JS中,如何判断一个被转换的数是否是NaN
  6. Android WiFi 经常掉线出现的几个原因分析!
  7. C语言学习篇(32)——为什么C语言不能函数重载
  8. centos7正确关机重启
  9. 关于如何在Listener中注入service和ServletContextListener源码分析
  10. HDU2561 第二小整数【水题+序列处理】
  11. jax_ws_JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远
  12. sql server查看密码使用天数和剩余天数
  13. Linux系统swap分区扩容,swap分区扩容
  14. 计算机在教育中的应用的基本现状,现代教育技术应用的现状与发展
  15. jdk15和jdk8_jdk15下载
  16. html中菜单触碰变色,利用css filter实现菜单图片变色效果
  17. sqlserver2012链接远程服务器,修复︰ 在 SQL Server 2012年链接服务器和远程服务器上的不同排序规则的数据更新时性能降低...
  18. gcd中group实现并发任务全部完成后
  19. 理解DCT与DST【三】:离散正弦变换
  20. android跟随系统切换语言

热门文章

  1. spring boot 解决Ajax 跨域问题
  2. php打印输出空格以及echo中.和,的区别
  3. Android 2.0中电话本contact的读写操作(增删改查)
  4. 商业流程服务BPass你真的了解吗?
  5. 雷电虚拟模拟器安装问题
  6. oppo r15 android 8,OPPO R15体验:基于安卓8.1,ColorOS 5.0更好用
  7. 机械工程师的转行之路
  8. DOTA-RGD,DOTA-ingr多肽,(68)Ga-DOTA-ingr
  9. MFC模拟AutoCAD 在单文本视图窗口任意位置输入文字
  10. 下载SVN并设置中文语言