欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

批處理僅允許在指定電腦computername上執(zhí)行的代碼

 更新時間:2023年07月05日 09:41:32   作者:batcher  
這篇文章主要介紹了批處理僅允許在指定電腦computername上執(zhí)行的代碼,需要的朋友可以參考下

在實際的工作環(huán)境中,出于某種需要或特定條件的限制,同一個批處理腳本會要求在某些電腦上可以執(zhí)行,在其它電腦上則不能執(zhí)行。具體的判斷條件可能有多種,例如計算機名、用戶名、序列號、日期、時間、IP地址、MAC地址等。

本文的主要目的是演示幾種不同的思路,實現(xiàn)通過判斷計算機名來決定是否允許執(zhí)行批處理腳本。不包含以下內(nèi)容:

  • 怎樣防止bat腳本被篡改

  • 怎樣加密bat腳本

  • 怎樣把bat腳本轉(zhuǎn)換成exe文件

方法1:寫一大推 if 條件判斷

test-1.bat

@echo off
if /i "%computername%" equ "ZhangSan" (
    goto :AuthPass
) else if /i "%computername%" equ "LiSi" (
    goto :AuthPass
) else if /i "%computername%" equ "WangWu" (
    goto :AuthPass
) else if /i "%computername%" equ "ZhaoLiu" (
    goto :AuthPass
) else (
    echo 不符合執(zhí)行條件
    pause
    goto :eof
)
:AuthPass
echo 符合執(zhí)行條件
REM 業(yè)務代碼放在下面
pause

這個方法的缺點是顯而易見的,當允許執(zhí)行的計算機名很多的時候,比如成百上千個計算機名都允許執(zhí)行,那么這些if條件就顯得非常臃腫,而且難以維護。

方法2:讀取白名單的內(nèi)容

把允許執(zhí)行的計算機名稱寫入白名單文件 WhiteList.txt 每行一個計算機名,例如:

ZhanSan

LiSi

WangWu

ZhaoLiu

test-2-1.bat

使用 for 命令逐行判斷白名單里面的字符串是否跟當前計算機名稱相匹配。如果能找到匹配的行,則把自定義變量 AllowFlag 的值更改為 true ;如果找不到匹配的行,則自定義變量 AllowFlag 的值仍然保持為 false 不變。

@echo off
set "AllowFlag=false"
for /f "delims=" %%i in ('type "WhiteList.txt"') do (
    if /i "%computername%" equ "%%i" (
        set "AllowFlag=true"
    )
)
if "%AllowFlag%" equ "false" (
    echo 不符合執(zhí)行條件
    pause
    goto :eof
)
:AuthPass
echo 符合執(zhí)行條件
REM 業(yè)務代碼放在下面
pause

test-2-2.bat

使用 findstr 命令判斷能否在白名單里面找到當前計算機名稱。如果能找到,則系統(tǒng)變量 errorlevel 的值為0;如果找不到,則系統(tǒng)變量 errorlevel 的值為1。

@echo off
findstr /i /x "%computername%" "WhiteList.txt" >nul
if errorlevel 1 (
    echo 不符合執(zhí)行條件
    pause
    goto :eof
)
:AuthPass
echo 符合執(zhí)行條件
REM 業(yè)務代碼放在下面
pause

有的人喜歡這個方法,因為他們覺得維護 txt 文件比較方便。也有的人不喜歡這個方法,是因為除了 bat 文件之外還要有個txt文件,他們更加傾向于把白名單列表也放在 bat 文件里面,于是就有了下面的方法。

方法3:白名單放在bat文件內(nèi)部

test-3.bat

@echo off
for /f "delims=:" %%i in ('findstr /n /b /e ":AllowList" "%~f0"') do (
    more +%%i "%~f0" > "%temp%\WhiteList.txt"
)
findstr /i /x "%computername%" "%temp%\WhiteList.txt" >nul
if errorlevel 1 (
    echo 不符合執(zhí)行條件
    pause
    goto :eof
)
:AuthPass
echo 符合執(zhí)行條件
REM 業(yè)務代碼放在下面
pause
goto :eof
REM 白名單放在結尾
:AllowList
ZhanSan
LiSi
WangWu
ZhaoLiu

其它幾個可以作為判斷條件的信息:

用戶名

%username%

日期

%date%

時間

%time%

主板BIOS序列號

wmic BIOS get SerialNumber /value
wmic BASEBOARD get SerialNumber /value

硬盤序列號

wmic DISKDRIVE get SerialNumber /value
wmic path Win32_PhysicalMedia get SerialNumber /value

批處理獲取多網(wǎng)卡系統(tǒng)中指定網(wǎng)絡連接對應的MAC地址和IP地址

@echo off
REM 設置網(wǎng)絡適配器的名稱
set "AdapterName=以太網(wǎng) 2"
set "FileTmp=%temp%\ipList.txt"
ipconfig /all >"%FileTmp%"
for /f "delims=:" %%i in ('findstr /n /c:"%AdapterName%" "%FileTmp%"') do (
    set "SkipRow=%%i"
    goto :FindMAC
)
:FindMAC
for /f "tokens=2 delims=:" %%i in ('more +%SkipRow% "%FileTmp%" ^| findstr "..-..-..-..-..-.."') do (
    set "MAC=%%i"
    goto :FindIP
)
:FindIP
for /f "tokens=2 delims=:(" %%i in ('more +%SkipRow% "%FileTmp%" ^| findstr /v "IPv6" ^| findstr "IP"') do (
    set "IP=%%i"
    goto :ShowResult
)
:ShowResult
set "MAC=%MAC: =%"
echo,%MAC%
set "IP=%IP: =%"
echo,%IP%
pause

到此這篇關于批處理僅允許在指定電腦computername上執(zhí)行的代碼的文章就介紹到這了,更多相關批處理限制在指定電腦上才能執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論