標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2020年6月28日 星期日

5a88遠端遙控管理程式(台南開發)_bat檔_研究心得與程式碼解析

5a88遠端遙控管理程式 20200611版本
一、資料夾內的內容
有兩個資料夾bin與PSTools、一個5A88tnR.bat、一個IP_list_sample.txt。
我們的重心會放在5A88tnR.bat。
程式碼:
REM 讀取5a88tnR.ini 取得預設帳密及預設選單
if not exist .\bin\5a88tnR.ini (echo 找不到.\bin\5a88tnR.ini,請重新下載程式。 & pause & exit)

解釋:
檢查不到 .\bin\5a88tnR.ini ,印出找不到.\bin\5a88tnR.ini,請重新下載程式。暫停、離開。

想法:
if exist .\bin\5a88tnR.ini (echo 找到.\bin\5a88tnR.ini。 )
結語:
檔案存在與否? 使用if exist 檔案名稱 (echo 找到檔案名稱。 )

程式碼:
For /f "eol=# tokens=1,2 delims==" %%i in (.\bin\5a88tnR.ini) do (
    if /I %%i==AdminPW set AdminPW=%%j
    if /I %%i==AdminSU set AdminSU=%%j
    if /I %%i==AskAnyTime set AskAnyTime=%%j
    if /I %%i==PresetMU set PresetMU=%%j
)

解釋:
/f 代表要 FOR 迴圈會對傳入的字串進行解析(parsing)
eol=# 用來決定斷行符號,預設為 \n
delims== 用來決定欄位的分隔字元,預設為空白與TAB符號,並可自訂多個字元
tokens=1,2 會得到一個 %i 與一個 %j 變數值,分別代表比對到的第1與第2個欄位。

想法:
想知道在這段程式中,到底取到那些值?那程式碼要如何改寫?
For /f "eol=# tokens=1,2 delims==" %%i in (.\bin\5a88tnR.ini) do (
    echo "%i = "%%i "%j = "%%j
    if /I %%i==AdminPW (set AdminPW=%%j
      echo AdminPW=%%j
     )
    if /I %%i==AdminSU (set AdminSU=%%j
      echo AdminSU=%%j
     )
    if /I %%i==AskAnyTime (set AskAnyTime=%%j
      echo AskAnyTime=%%j
     )
    if /I %%i==PresetMU (set PresetMU=%%j
      echo  PresetMU=%%j
     )
)
程式碼:
REM 設定本機IP與MAC
:SetIP
cls
ipconfig /all | find "IPv4 位址" > %TEMP%\ip-chk.txt
set count=0

解釋:
cls清除螢幕
ipconfig /all | find "IPv4 位址" > %TEMP%\ip-chk.txt
ipconfig /all查詢IP、mac 及其他網卡資訊

find "IPv4 位址"尋找IPv4 位址
ipconfig /all | find "IPv4 位址" IP、mac 及其他網卡資訊內,尋找IPv4 位址。

ipconfig /all | find "IPv4 位址" > %TEMP%\ip-chk.txtIP、mac 及其他網卡資訊內,尋找IPv4 位址。將搜尋結果輸出到%TEMP%\ip-chk.txt
那問題是:%TEMP%是哪?

想法:
echo %TEMP%
PAUSE
EXIT
REM 設定本機IP與MAC
:SetIP
cls
ipconfig /all | find "IPv4 位址" > %TEMP%\ip-chk.txt
set count=0
%TEMP%C:\Users\使用者名稱\AppData\Local\Temp

程式碼:
For /f "eol=# tokens=1-16 delims=( " %%a in (%TEMP%\ip-chk.txt) do (
set /a count+=1
if [%%p] NEQ [] (
echo !count!. %%p
set LocalIP=%%p
) else (
set /a count-=1
if [!LocalIP!]==[] set LocalIP=%%l
)
)


解釋:
For /f "eol=# tokens=1-16 delims=( " %%a in (%TEMP%\ip-chk.txt)
tokens=1-16 會得到16個變數從 %a ~%p 變數值,分別代表比對到的第1與第16個欄位。
另外,要取出set 的變數值,需使用!變數名!

想法:
想知道16個變數從 %a ~%p 變數值與LocalIP取得的值
For /f "eol=# tokens=1-16 delims=( " %%a in (%TEMP%\ip-chk.txt) do (
set /a count+=1
echo a=%%a b=%%b c=%%c d=%%d e=%%e f=%%f g=%%g h=%%h
echo i=%%i j=%%j k=%%k l=%%l m=%%m n=%%n o=%%o p=%%p  
if [%%p] NEQ [] (
echo !count!. %%p
set LocalIP=%%p
  echo LocalIP=!LocalIP! 
) else (
set /a count-=1
if [!LocalIP!]==[] set LocalIP=%%l
)
)

資料來源:
1.5a88相關資料下載
2.批處理中setlocal enabledelayedexpansion的作用詳細整理
3.windows下bat批處理中%cd%和%~dp0的區別
4.如何利用批次檔(Batch)讀取指令執行的結果或文字檔案內容
5.免費一鍵還原軟體AOMEI OneKey Recovery
6.5A88電腦管理系統
7.5A88tnR台南遠端遙控程式(請先詳讀)

沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html