bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读
點(diǎn)擊上方“藍(lán)字”關(guān)注我們
之前發(fā)過一篇文章小程序反編譯工具在windows系統(tǒng)下的調(diào)用腳本提到了Windows平臺下的腳本,但是對腳本沒有做詳細(xì)說明。本文就是針對腳本做的講解。對批處理感興趣的可以了解下。
不會基礎(chǔ)也沒關(guān)系。下面我們進(jìn)入正題。
腳本解讀
第1行:
# WXAPPUNPACKER_PATH 項(xiàng)目路徑這段其實(shí)在 shell 文件中是注釋內(nèi)容,只不過在翻譯這份腳本的時(shí)候是邊查邊寫,復(fù)制過來沒有修改,所以嚴(yán)格說這里屬于翻譯錯(cuò)誤,正確的內(nèi)容應(yīng)該是如下:
:: WXAPPUNPACKER_PATH 項(xiàng)目路徑:: 代表表示該行是注釋內(nèi)容
第2行:
set WXAPPUNPACKER_PATH=%~dp0『%~dp0』是啥?
“d”為Drive的縮寫,即為驅(qū)動器,磁盤
“p”為Path縮寫,即為路徑,目錄 所以『%~dp0』就表示獲取當(dāng)前路徑。
這段的作用就是定義了名為『WXAPPUNPACKER_PATH』的變量并且值為當(dāng)前目錄。
第4行:
set FILE_FORMAT=wxapkg定義名為『FILE_FORMAT』的變量,值為 wxapkg
第6~12行:
:wxappUnpacker_pkgecho "node %WXAPPUNPACKER_PATH%/wuWxapkg.js %fname%"
node %WXAPPUNPACKER_PATH%/wuWxapkg.js %2 %1
goto:eof
這里定義了一個(gè)名為『wxappUnpacker_pkg』的函數(shù),打印即將執(zhí)行的腳本:"node [當(dāng)前路徑]/wuWxapkg.js [文件名]" 執(zhí)行腳本:node [當(dāng)前路徑]/wuWxapkg.js 參數(shù)2 參數(shù)1
第14~32行:
:wxappUnpackerset 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
這里定義了一個(gè)函數(shù),作用是循環(huán)調(diào)用解包命令。
遺憾的是這里的腳本存在翻譯錯(cuò)誤:
對比下?shell?腳本來看看,定義一個(gè)de_dir變量賦值為第一個(gè)傳入?yún)?shù)。然后
then
de_dir=`pwd`
fi
是要判斷傳入?yún)?shù)是否為空字符串,是空串就賦值為取當(dāng)前目錄的命令,所以這里就翻譯錯(cuò)了,在MS-DOS下獲取當(dāng)前目錄的命令為%cd%。再往下是循環(huán)查找wxapkg文件,同樣也錯(cuò)了,正確的命令應(yīng)該是
命令行環(huán)境:
do
(call :wxappUnpacker_pkg %i $2)
批處理文件中:
@echo offfor /f "delims=\" %%i in ('dir /b /a-d /o-d "*.%FILE_FORMAT%"') do
(call :wxappUnpacker_pkg "%%i" $2)
需要注意的是在批處理文件中引用變量需要兩個(gè)百分號?%%。
第34~44行:
:de_pkgif "-d" == "%1"
(call :wxappUnpacker %1 %2)
else
(call :wxappUnpacker_pkg %1 %2)
goto:eof
這里定義了一個(gè)函數(shù),作用是根據(jù)參數(shù)是否是目錄來調(diào)用解包命令。
第46行:
# $1: pkg file or pkg dir; $2: order這里也是翻譯錯(cuò)誤,應(yīng)該在開頭用::標(biāo)記注釋。
第48行:
call :de_pkg %1 %2很簡單,就是調(diào)用?de_pkg?函數(shù),同時(shí)傳入了兩個(gè)參數(shù)。
基礎(chǔ)知識
最后說幾個(gè)基礎(chǔ)知識
預(yù)定義的變量
%CD% - 擴(kuò)展到當(dāng)前目錄字符串。
%DATE% - 用跟 DATE 命令同樣的格式擴(kuò)展到當(dāng)前日期。
%TIME% - 用跟 TIME 命令同樣的格式擴(kuò)展到當(dāng)前時(shí)間。
%RANDOM% - 擴(kuò)展到 0 和 32767 之間的任意十進(jìn)制數(shù)字。
%ERRORLEVEL% - 擴(kuò)展到當(dāng)前 ERRORLEVEL 數(shù)值。
%CMDEXTVERSION% - 擴(kuò)展到當(dāng)前命令處理器擴(kuò)展名版本號。
%CMDCMDLINE% - 擴(kuò)展到調(diào)用命令處理器的原始命令行。
%0 bat的完整路徑名如"C:\Windows\system32\xxx.bat"
參數(shù)%0具有特殊的功能,可以調(diào)用批處理自身,以達(dá)到批處理本身循環(huán)的目的,也可以復(fù)制文件自身等等。
%1 bat參數(shù)1依次類推%2參數(shù)2...
%path% - 當(dāng)前的環(huán)境變量。以分號隔開的路徑列表,路徑可包含空格,可以以''結(jié)尾, 可以以雙引號包圍之。
定義變量
SET =[]如果 是空字符串,則取消變量的定義,變量的值用雙引號或空格結(jié)束。引號如果沒有結(jié)束,則默認(rèn)范圍到行尾。
如何使用 MS-DOS 腳本的調(diào)用參數(shù)
ECHO %N 的范圍為 0-9 , %0 為文件名, %1-%9 為參數(shù),每次調(diào)用腳本最多支持 9 個(gè)參數(shù)
ECHO %*%* 代表所有傳入的參數(shù),即 %1-%9 ,并且包括其中的空白符
%*
%
Echo 命令
打開回顯或關(guān)閉請求回顯功能,或顯示消息。如果沒有任何參數(shù), echo 命令將顯示當(dāng)前回顯設(shè)置。
語法 :
echo [{on │ off}] [message]
Sample :@echo off / echo hello world
@ 命令
表示不顯示 @字符放在命令前將關(guān)閉該命令回顯,無論此時(shí)回顯是否處于打開狀態(tài)。
Sample :@echo off
CALL命令
可以在批處理執(zhí)行過程中調(diào)用另一個(gè)批處理,當(dāng)另一個(gè)批處理執(zhí)行完后,再繼續(xù)執(zhí)行原來的批處理 CALL [drive:][path]filename [batch-parameters] 調(diào)用的其它批處理程序。filename 參數(shù)必須具有 .bat 或 .cmd 擴(kuò)展名。CALL :label arguments 調(diào)用本文件內(nèi)命令段,相當(dāng)于子程序。被調(diào)用的命令段以標(biāo)簽:label開頭 以命令goto :eof結(jié)尾
其它還有很多命令,這里就不再贅述了,有興趣的同學(xué)可以自行查閱。
另外可以在逆向教程中查看本文
介紹一個(gè)可跨平臺的微信小程序反編譯客戶端
一起來探索下微信小程序包的魔數(shù)
2020年微信小程序解包常見問題匯總
微信小程序解包常見問題匯總第二彈
啥??微信小程序逆向教程微信小程序上線嘞
!!重磅!!10分鐘帶你反編譯網(wǎng)易嚴(yán)選電商微信小程序(視頻教程)
由于公眾號推送規(guī)則更改,請多多分享、點(diǎn)贊和“在看”,以及時(shí)獲取極客之路的最新動態(tài)。
? ? ? 點(diǎn)擊在看讓更多人發(fā)現(xiàn)精彩
總結(jié)
以上是生活随笔為你收集整理的bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式存储图解_BERT的youxiu变
- 下一篇: flutterapp部分手机无法打开_F