一、資料夾內的內容
有兩個資料夾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 位址。
那問題是:%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 的變數值,需使用!變數名!
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
)
)
資料來源:想知道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台南遠端遙控程式(請先詳讀)