bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读
點擊上方“藍字”關注我們
之前發過一篇文章小程序反編譯工具在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_pkgecho "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行:
: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
這里定義了一個函數,作用是循環調用解包命令。
遺憾的是這里的腳本存在翻譯錯誤:
對比下?shell?腳本來看看,定義一個de_dir變量賦值為第一個傳入參數。然后
then
de_dir=`pwd`
fi
是要判斷傳入參數是否為空字符串,是空串就賦值為取當前目錄的命令,所以這里就翻譯錯了,在MS-DOS下獲取當前目錄的命令為%cd%。再往下是循環查找wxapkg文件,同樣也錯了,正確的命令應該是
命令行環境:
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)
需要注意的是在批處理文件中引用變量需要兩個百分號?%%。
第34~44行:
:de_pkgif "-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結尾
其它還有很多命令,這里就不再贅述了,有興趣的同學可以自行查閱。
另外可以在逆向教程中查看本文
介紹一個可跨平臺的微信小程序反編譯客戶端
一起來探索下微信小程序包的魔數
2020年微信小程序解包常見問題匯總
微信小程序解包常見問題匯總第二彈
啥??微信小程序逆向教程微信小程序上線嘞
!!重磅!!10分鐘帶你反編譯網易嚴選電商微信小程序(視頻教程)
由于公眾號推送規則更改,請多多分享、點贊和“在看”,以及時獲取極客之路的最新動態。
? ? ? 點擊在看讓更多人發現精彩
總結
以上是生活随笔為你收集整理的bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式存储图解_BERT的youxiu变
- 下一篇: flutterapp部分手机无法打开_F