bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读

a3b987407e9c55af487026a1ebbc18ea.png

点击上方“蓝字”关注我们

之前发过一篇文章小程序反编译工具在windows系统下的调用脚本提到了Windows平台下的脚本,但是对脚本没有做详细说明。本文就是针对脚本做的讲解。对批处理感兴趣的可以了解下。

不会基础也没关系。下面我们进入正题。

脚本解读

第1行:

# WXAPPUNPACKER_PATH 项目路径

这段其实在 shell 文件中是注释内容,只不过在翻译这份脚本的时候是边查边写,复制过来没有修改,所以严格说这里属于翻译错误,正确的内容应该是如下:

:: WXAPPUNPACKER_PATH 项目路径

:: 代表表示该行是注释内容

第2行:

set WXAPPUNPACKER_PATH=%~dp0

『%~dp0』是啥?

  • “d”为Drive的缩写,即为驱动器,磁盘

  • “p”为Path缩写,即为路径,目录 所以『%~dp0』就表示获取当前路径。

这段的作用就是定义了名为『WXAPPUNPACKER_PATH』的变量并且值为当前目录。

第4行:

set FILE_FORMAT=wxapkg

定义名为『FILE_FORMAT』的变量,值为 wxapkg

第6~12行:

:wxappUnpacker_pkg 

echo "node %WXAPPUNPACKER_PATH%/wuWxapkg.js %fname%"

node %WXAPPUNPACKER_PATH%/wuWxapkg.js %2 %1

goto:eof

这里定义了一个名为『wxappUnpacker_pkg』的函数,打印即将执行的脚本:"node [当前路径]/wuWxapkg.js [文件名]" 执行脚本:node [当前路径]/wuWxapkg.js 参数2 参数1

第14~32行:

:wxappUnpacker 

set de_dir=%1

if "%de_dir%" == ""

set de_dir=%WXAPPUNPACKER_PATH%

echo %de_dir%

echo "for wxapkg in `find %de_dir% "*.${FILE_FORMAT}"`"

for %%fname in `/f %de_dir% -name "*.%FILE_FORMAT%"`

do

(call :wxappUnpacker_pkg %fname% %2)

goto:eof

这里定义了一个函数,作用是循环调用解包命令。
遗憾的是这里的脚本存在翻译错误:
对比下 shell 脚本来看看,定义一个de_dir变量赋值为第一个传入参数。然后

if [ -z "$1" ]
then
de_dir=`pwd`
fi

是要判断传入参数是否为空字符串,是空串就赋值为取当前目录的命令,所以这里就翻译错了,在MS-DOS下获取当前目录的命令为%cd%。再往下是循环查找wxapkg文件,同样也错了,正确的命令应该是
命令行环境:

for /f "delims=\" %i in ('dir /b /a-d /o-d "%cd%\*.%FILE_FORMAT%"') 
do
(call :wxappUnpacker_pkg %i $2)

批处理文件中:

@echo off
for /f "delims=\" %%i in ('dir /b /a-d /o-d "*.%FILE_FORMAT%"') do
(call :wxappUnpacker_pkg "%%i" $2)
  • 需要注意的是在批处理文件中引用变量需要两个百分号 %%

第34~44行:

:de_pkg

if "-d" == "%1"

(call :wxappUnpacker %1 %2)

else

(call :wxappUnpacker_pkg %1 %2)

goto:eof

这里定义了一个函数,作用是根据参数是否是目录来调用解包命令。

第46行:

# $1: pkg file or pkg dir; $2: order

这里也是翻译错误,应该在开头用::标记注释。

第48行:

call :de_pkg %1 %2

很简单,就是调用 de_pkg 函数,同时传入了两个参数。

基础知识

最后说几个基础知识

预定义的变量

  • %CD% - 扩展到当前目录字符串。

  • %DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

  • %TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

  • %RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

  • %ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

  • %CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

  • %CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

  • %0 bat的完整路径名如"C:\Windows\system32\xxx.bat"

    • 参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。

  • %1 bat参数1依次类推%2参数2...

  • %path% - 当前的环境变量。以分号隔开的路径列表,路径可包含空格,可以以''结尾, 可以以双引号包围之。

定义变量

SET =[]

如果 是空字符串,则取消变量的定义,变量的值用双引号或空格结束。引号如果没有结束,则默认范围到行尾。

  • 如何使用 MS-DOS 脚本的调用参数

    ECHO %

    N 的范围为 0-9 , %0 为文件名, %1-%9 为参数,每次调用脚本最多支持 9 个参数

    ECHO %*

    %* 代表所有传入的参数,即 %1-%9 ,并且包括其中的空白符

    • %*

    • %

Echo 命令

打开回显或关闭请求回显功能,或显示消息。如果没有任何参数, echo 命令将显示当前回显设置。

语法 :

echo [{on │ off}] [message]

Sample :@echo off / echo hello world

@ 命令

表示不显示 @字符放在命令前将关闭该命令回显,无论此时回显是否处于打开状态。

Sample :@echo off

CALL命令

可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理 CALL [drive:][path]filename [batch-parameters] 调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。CALL :label arguments 调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头 以命令goto :eof结尾

其它还有很多命令,这里就不再赘述了,有兴趣的同学可以自行查阅。

另外可以在逆向教程中查看本文

393247e614c49992a930b37cbe22a33a.png

介绍一个可跨平台的微信小程序反编译客户端

c082efeb33b20a5523f9f43c4a7bc504.png

一起来探索下微信小程序包的魔数

11368f49d91a9cbdd5ba3654c0504448.png

2020年微信小程序解包常见问题汇总

72c566e40314d447489afedd24ef0d1a.png

微信小程序解包常见问题汇总第二弹

1f4ceed9c63ed95f3134879d0c27a56d.png

啥??微信小程序逆向教程微信小程序上线嘞

fb38c05ccd35a2f783a903a41fdc610f.png

!!重磅!!10分钟带你反编译网易严选电商微信小程序(视频教程)


由于公众号推送规则更改,请多多分享点赞“在看”,以及时获取极客之路的最新动态。

      点击在看让更多人发现精彩36a79ca095d61c4d44f6305679a9fc41.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把HTML代码上传到gitee,使用git上传项目到gitee以及VS使用git管理项目

在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)$ git config --global user.name "hanyuntao"$ git config --global user.email "hanyuntaocn163.com"Paste_Image.png2.4 设置SSH key(git中sshkey有何作用?)2.4.1 生成…

定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?

临近年末,各家保险公司都开始备战2020年的“开门红”。对于保险公司来说,“开门红全年红”,只要开门红的任务完成得好,那么今年大半年的保费就不用担心了,因此保险公司们对于这一战都十分重视。如果说“双11”、“双12…

html中post语句,html中post乱码的解决方法

html中post乱码的解决方法发布时间:2021-05-27 11:29:00来源:亿速云阅读:91作者:小新这篇文章主要介绍html中post乱码的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要…

泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗

中考是人们升高中的必经之路,它虽然没有高考那样振奋人心,但是对于当时的人来说也算是一场最正规的考试。首先,不可否认的是中考是很重要的。虽然它不能对高考有着直接影响,但是却有着间接影响。在每年的六份左右出来。中考是很重…

django返回指定html文件,Django返回HTML文件的实现方法

前面我们简单的了解Django的一些工作原理,其中关于页面展示的内容,也全部都是视图(Views)返回的内容,那么我们也知道前端包括很多内容。如:HTML,CSS,JavaScript等以及各种插件,才具备完全的页面…

c++获取图像的长宽 opencv_【第一篇:C++与opencv】图片的读取和显示 | 学步园

这里介绍C版本的opencv,和C语言版本有些不同,先看代码^_^【编译环境:opencv2.4.4和VS2008】#include "stdafx.h"#include "opencv2/opencv.hpp"using namespace cv;using namespace std;int _tmain(int argc, _TCHAR* ar…

计算机网络纠错码,计算机网络:纠错

本文概述当数据从发送方发送到接收方时, 纠错码用于检测和纠正错误。纠错可以通过两种方式处理:向后纠错:发现错误后, 接收方会请求发送方重新传输整个数据单元。前向纠错:在这种情况下, 接收器使用纠错码自动纠正错误。单个附加位可以检测到…

安卓线程同步面试_Android面试题

1、java的重载和重写分别是什么含义?重载:(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2) java的方法重载,就是在类…

html ie7高度,在HTML,IE6和IE7中工作的HTML垂直和水平居中的实用解决方案

什么是一个实用的解决方案,可以在HTML,IE6和IE7中使用HTML中的纵向和横向内容?一些细节:>我正在寻找整个页面的解决方案.>您只需要指定要居中的元素的宽度.在设计时间内不知道元素的高度.>最小化窗口时,只有当所有空白区域消失时才会出现滚动.换…

扭矩大好还是马力大好_翡翠手镯圈口到底是买大好,还是买小好?行家告诉你...

现在的女性多数人都喜欢购买翡翠手镯、翡翠手链、翡翠戒面等,尤其对翡翠手镯不仅能表现出女性的知性优美,还对身体有一定的好处。翡翠手镯是翡翠价值中除了翡翠戒面外最高的二等翡翠。因为翡翠手镯除了那种开口式的镶嵌翡翠手镯其他的都是闭口的&#xf…

一年时间学会日语英语计算机可能么,上海开放大学和上海应用技术大学哪个好,高三选地理能报考上海大学日语系或英语系吗?...

又到了一年一度的开学季了,现在有很多学子都在旁听侧问上海开放大学和上海应用技术大学哪个好这些问题,我也整理了一些信息上海大学好不好,上海开放大学的人才培养目标是( ),吉林大学自考本科计算机应用软件专业需要考过几门&…

启动失败代码2_菲斯曼燃气壁挂炉故障代码大全及解决方法

菲斯曼燃气壁挂炉型号菲斯曼燃气壁挂炉故障代码大全及解决方法以:06故障代码:系统压力过低。设备的反映: 燃气器锁定。措施:检查系统水压,必要时补充加注供暖水。 0A故障代码:燃气压力过低。设备的反映: 燃气器锁定。措…

用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...

python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name name self.shape shape def showname (self): print(self.name) def showshape(self): print(self.shape)if __name__ __main__: f1flower("baihe",&q…

新型消防机器人作文_未来的消防机器人作文700字

最近发生了一件让全国人民都痛心的的事情——30名救火英雄,为了扑灭熊熊山火,奉献出自己年轻的生命。每当听见刺耳的火灾警报声,我首先想到的是消防官兵一幅幅救火的场面,他们是那么地奋不顾身:每当看到橙红色的身影在…

聘用计算机高级职称,关于咨询高级职称聘用的问题

来信内容:尊敬的领导:你好!我是青海省某事业单位的专业技术人员,我于2008年下半年取得计算机技术与软件专业技术资格考试的网络工程师(中级)任职资格,在2011年10月份被聘用为中级工程师,但是在2011年下半年…

3不能安装库_不锈钢水槽如何安装?3个细节要注意,不能忽视,别被套路了

不锈钢水槽如何安装?3个细节要注意,不能忽视,别被套路了随着时代不断的进步。人们生活水平也是不断的提高。生活用品有时间来选,慢慢的步入了我们的日常中。你们觉得家中最重要的地方是什么呢?其实就是厨房&#xff0c…

车站信号计算机联锁系统英语,车站信号计算机联锁-复习题

计算机联锁系统复习思考题1、什么是计算机联锁?2、计算机联锁系统具有哪些功能?3、计算机联锁系统的联锁控制功能具体包括哪些?4、计算机联锁系统的显示功能具体包括哪些?5、工业控制计算机由哪两大部分组成?6、什么是…

vs工程 更换opencv版本_Windows下opencv源代码转化和编译

1. CMake工程转化工具下载。CMake是开源的跨平台安装(编译)工具,OpenCV开源代码想要用VS平台打开并编译得由它来做工程转化操作,最后利用VS平台编译出可在windows平台下运行的动态库文件DLL。CMake下载地址:https://cmake.org/download&#…

aqua在HTML什么颜色,HTML颜色一览

在HTML里,颜色有两种表示方式。一种是用颜色名称表示,比如blue表示蓝色。另外一种是用16进制的数值表示RGB的颜色值。RGB是Red,GreenBlue意思RGB每个原色的最小值是0,最大值是255,如果换算成16进制表示,就是…

清理localstorage_关于Cookie、Session、LocalStorage、Cache-Control(摘录)

关于Cookie、Session、LocalStorage、Cache-Control,在总结前先了解一个过程:当用户在一个浏览器注册账号再登录,客户端和服务器发生了什么?一、发生了什么?1、用户打开注册页面,提交信息(登录名…