bat 感想

用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吧。

时间: 2024-10-12 23:52:42

bat 感想的相关文章

BAT三巨头继2013年后再次集体亮相2016IT领袖峰会

BAT三巨头继2013年后再次集体亮相2016IT领袖峰会,乐视CEO贾跃亭出席,马化腾遭遇最尴尬问题 3月27日,数字中国联合会主席吴鹰.百度公司董事长兼首席执行官李彦宏.腾讯公司董事会主席兼首席执行官马化腾.阿里巴巴创始人马云,联想集团董事长兼首席执行官杨元庆和乐视董事长.CEO贾跃亭出席 "IT创新与共享经济"高端对话.此次峰会主题为"IT·智能·共享",据悉,中国(深圳)IT领袖峰会由深圳市人民政府和数字中国联合会联合主办宣布,从2009年开始举办,目前已成

Windows Server下把BAT批处理注册成服务在后台运行且注销后能正常运行

批处理有如下特点: 1.登录到当前窗口运行时,如果关闭控制台会连同启动的程序一起关闭. 2.如果是以start /b的形式启动,那么同样也是在控制台关闭后者注销当前窗口也会一起关闭. 3.如果以vbs的形式启动,注销当前用户也会一起关闭. 有如下方式解决: 1.使用[任务计划]去启动批处理,里面有很多个触发点,可以选择[计算机启动时]触发也能达到开机启动的效果,而不用登录桌面. 2.有错误启动Windows Service方式,用[sc]命令注册服务,然后以cmd.exe的形式去启动(C:\Wi

python安装扩展”unable to find vcvarsall.bat“的解决办法

产生原因: python3.4用的是msvs2010编译的,所以python3.4默认只能认出msvs2010. python2.7用的是msvs2008编译的,所以python2.7默认只能认出msvs2008. 方法一:安装mingw(不推荐) 下载mingw环境,添加环境变量 或者使用 python setup.py build –compiler=mingw32   方法二:安装对应版本的msvs python2安装msvs2008,python3安装msvs2010.   方法三:设置

java 创建和执行bat

/* */package com.***app.mappcore.impl.util; import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter; /** * 批处理文件的执行类.<br> * @author mapengfei <br> * @versio

catalina.bat

startup.bat在最后调用catalina.bat,并且传递了start参数,设置了CATALINA_HOME和CURRENT_DIR俩个临时环境变量.那么catalina.bat都做了什么? 1 @echo off 2 rem Licensed to the Apache Software Foundation (ASF) under one or more 3 rem contributor license agreements. See the NOTICE file distrib

Catalina.bat详解

Catalina.bat是tomcat所有脚本中最重要的脚本,完成几乎所有的tomcat操作.如启动,关闭等等,都是由catalina.bat脚本来完成的.接下来,我将对Tomcat catalina.bat脚本进行分析. 首先省去catalina.bat开头诸多注解,这些注解主要是讲解各个变量是干什么的.需要的话,自己看下英文就可以了.这里就不翻译了. rem Guess CATALINA_HOME if not defined  查看是否在tomcat目录下,与startup.bat里相同,

百度掉出BAT?扯淡前先知道啥是带路党(《越界》连载2)

你认识路当然不需要地图,但问题是在互联网上,就算你是骨灰级网民,也需要带路党.百度就是带路党 这两天,一篇题为百度掉出BAT序列的文章很火,火到我也不知道这玩意为啥那么吸引眼球.因为很标题党,很扯淡,正好我<越界--互联网+时代必先搞懂的大败局>连载到百度历史,不妨摘出来,让大家先看看百度怎么成为网民伟哥的吧. 文/张书乐 <越界--互联网+时代必先搞懂的大败局>连载之一 2010年3月,当时百度在中国最大的竞争对手谷歌以频受黑客攻击为由,关闭了谷歌中国的域名google.cn,并

读《平凡的世界》感想(一)

读<平凡的世界>感想(一) 平凡的世界是一本经典的书,一直想看,最近终于开始品读这部巨著."平凡的世 界"是路遥文集中份量最重的一部长篇,全景式地描写了中国现代城乡生活,通过复杂 的矛盾纠葛,以孙少平等人位代表刻画了社会各阶层普通人们的形象,人生的自尊.自 强与自信,人生的奋斗与拼搏,挫折与追求,痛苦与欢乐,纷繁地交织,读来令人荡气 回肠. 全书的主角是孙少平,他是一个平凡而普通的人,他没有过人的武艺或超群的智慧, 他也有世俗的攀比心和青年人的迷茫:那他凭什么成为一部文学巨

(转)Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat

刚在机器上windows环境下装上pip方便以后安装包的时候使用,谁知道第一次使用pip安装asyncio的时候就报错. 在Windows7x64下使用pip安装包的时候提示报错:Microsoft Visual C++ 9.0 is required  (Unable to find vcvarsall.bat) 环境:windows7 x64 ,python2.7 ,VS2012 原因:windows下使用pip安装包的时候需要机器装有vs2008,VS2012还不行,如果不想装VS2008