zoukankan      html  css  js  c++  java
  • 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吧。

  • 相关阅读:
    json对象和字符串的相互转换
    使用link rel="shortcut icon"为网页标题加图标
    jQuery——Js与jQuery的相互转换
    用accessKey设置快捷键
    CSS :invalid 选择器
    创建并调用 DLL(1)
    调用外部 DLL 中的函数(2. 晚绑定)
    调用外部 DLL 中的函数(1. 早绑定)
    VCL 中的 Windows API 函数(6): BeginDeferWindowPos
    VCL 中的 Windows API 函数(5): AlphaBlend
  • 原文地址:https://www.cnblogs.com/pixs-union/p/7435969.html
Copyright © 2011-2022 走看看