用bat做了个跨版本更新包的生成脚本,由于之前都是写一些很简单bat,或者python里使用windows命令,所以纯用bat做这个东西,还是有点复杂的。

过程中遇到很多问题,主要是参数太多,变量的使用也很奇怪。所以做一下笔记,以后遇到问题可以来查一下。

 1 @echo off ::关闭执行命令显示
2 setlocal enableDelayedExpansion ::开启延时扩展
3
4 set /p zipspath=输入要处理的压缩包文件目录:
5 if not exist %zipspath% (
6 echo %zipspath%不存在
7 pause
8 )
9 ::zipssort ::对文件夹里的zip文件排一下字典序
10 set fnum=0
11 for /f %%A in ('dir /b/on %zipspath%') do ( ::遍历一个路劲,/b/on都是过滤选项 /b只文件名 /o排序 n是/o的属性,表示字典序
12 set /a fnum+=1 ::set 产生变量和修改变量值 /a 说明变量的值是一个表达式的值,不然就是一个字符串了
13 set zfiles!fnum!=%%A ::生成类似数组的结构,但是bat没有数组,所以使用a1,a2,a3...这种形式的变量模仿
14 )
15
16 ::unzipandcombine
17 if exist %zipspath%\..\zipsout_deals rd /s/q %zipspath%\..\zipsout_deals ::rd /s/q ::删除一个文件夹,/s递归删除包括子目录 /q不询问
18 set /a flen=!fnum! ::延时变量的使用需要!!括起来
19 set /a endi=!fnum!-1
20 for /l %%i in (1,1,%endi%) do ( ::必须用endi的变量保存!fnum!-1的值才能在循环结构中使用
21 set fn1=!zfiles%%i:~0,-4! ::!xxx:~0,-4! 字符串截取操作,从第一个字符到倒数第4个字符(不包括)之前
22 set fn2=!zfiles%flen%:~0,-4!
23 set zdir=%zipspath%\..\zipsout_deals\!fn1!_!fn2!
24
25 if exist !zdir! rd /s/q !zdir!
26 md !zdir!
27
28 for /l %%j in (%%i,1,!fnum!) do ( :: /l表示以增量的形式从开始到结束的一个数字序列,1是步长
29 unzip -o %zipspath%\!zfiles%%j! -d !zdir! ::zip.exe和unzip.exe 可在http://stahlworks.com/dev/index.php?tool=zipunzip下載
30 )
31 )
32
33 ::zip
34 set zd=%zipspath%\..\zipsout_deals ::bat的cd比较恶性,无法跨盘符,所以需要先声明盘符
35 %zd:~0,2%
36 cd %zd%
37 for /f %%Z in ('dir /b /ad-h %zd%') do (
38 cd %%Z
39 zip -r ..\%%Z.zip .\* ::-r 压缩的时候能够带上子目录 ,注意zip -r a.zip ./a ,如果./a是个路径,会把a也压缩进a.zip 如:a.zip/a/1.txt,所以先进入,再压缩。
40 cd ..\
41 rd /s/q %%Z
42 )
43 pause

bat还是相当不友好的,和shell没法比,所以win上还是用python吧。

bat 感想的更多相关文章

  1. 这是一位拿到BAT大厂offer应届生的年终总结,那么你的呢?

    壹 关于求职 2018年初,我还在北京后厂村的马路上被风吹得瑟瑟发抖. 那时我刚刚结束了半年的实习时光,开始考虑年后是否要继续实习.一开始我也在纠结实习转正和秋招之间如何权衡,但是在经历了春招以后,我 ...

  2. BAT“搅局”B2B市场,CIO们准备好了吗?

    "CIO必须灵活构建其所在企业的IT系统,深入业务,以应对日新月异的数字化业务环境."   BAT军团"搅局"B2B市场,CIO们准备好了吗? 庞大的企业级市场 ...

  3. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

  4. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  5. BVT & BAT (版本验证测试和版本验收测试)

    BVT & BAT 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.BVT: (Build Verification Test ) BVT的概念: BVT(版本验证测试)是在所有开发 ...

  6. 批处理bat 命令

    1.批处理常用符号: - echo 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置 语法:@echo [{ on|off }]  echo{"显示 ...

  7. 【转】BAT 批处理脚本 教程

    第一章 批处理基础第一节 常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在 ...

  8. 使用bat(批处理文件类型)两步更改笔记本IP

    一.背景 在南农工的第三年里,学校终于给教学区覆盖了无线网NJAUPK,这解决了我在汇贤楼教室上自习没网写web的尴尬处境!经常在9栋和汇贤楼教学区之间来回,遇见了一个大问题:宿舍里无线需要更改IPV ...

  9. bat转exe工具 Bat To Exe Converter v2.4.7 绿色版

    一款非常小巧的工具,从它的名称便能知道它的功能:它能将BAT或CMD文件转换成 EXE 文件.使用它,你可以保护由自己开发的软件的软件代码,创建一个漂亮的图标,让软件看起来更专业. 下载地址: htt ...

随机推荐

  1. gromacs2018使用踩坑记--insert-molecules

    1] gmx插入分子[ -f [<.gro / .g96 / ...>] ] [ -ci [<.gro / .g96 / ...>] ] [ -ip [<.dat> ...

  2. Git中.gitignore忽略文件(maven项目)

    使用情景: 有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们 解决方案: 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略 ...

  3. git pull 覆盖本地代码

    在使用Git的过程中,有些时候我们只想要git服务器中的最新版本的项目,对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖,具体代码如下: $ git fetch --all $ ...

  4. Delphi中基本控件之SaveDialog控件的使用总结

    首先向Form窗体拖一个SaveDialog控件,Name属性改为:dlgSave,然后添加一个按钮,Caption属性改为:浏览,Name属性改为:btnBrowse. 然后双击浏览按钮添加如下代码 ...

  5. APP Store上架QA&注意事项

    一. App Store上架费用,要多少钱. 这个因产品而异,一般是6000-10000元人民币. 二. App Store上架周期,要多久过. 这个因产品而异,正常的话一周内,如果产品老是出问题,被 ...

  6. CTF—WEB—sql注入之无过滤有回显最简单注入

    sql注入基础原理 一.Sql注入简介 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手 ...

  7. navicat 系列软件一点击菜单栏就闪退

    现象:安装多个版本都出现了闪退的现象 解决方案:后来发现,原来是启动了有道词典屏幕取词才会出现这种现象,关了有道就没事.

  8. #Java学习之路——基础阶段二(第十四篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. 【VS开发】【电子电路技术】RJ45以太网传输线研究

    RJ45以太网传输线研究 最近研究远距离差分视频传输方案,理所当然想到了LVDS协议.至于选用cameralink传输线,还是选用其他方案,本人更倾向于廉价的RJ45以太网线来实现LVDS差分信号的传 ...

  10. 红帽学习笔记[RHCSA] 第二周

    目录 红帽学习笔记[RHCSA]第二周 环境 第七课[网络配置相关] 在Vmware中添加网卡 将网卡添加到虚拟机上 关于网卡命名规则 配置网络 网络配置命令总结 更改hostname 关于SSH的一 ...