亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

本文的主要目的是演示幾種不同的思路,實(shí)現(xiàn)通過判斷計(jì)算機(jī)名來決定是否允許執(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è)務(wù)代碼放在下面
pause

這個(gè)方法的缺點(diǎn)是顯而易見的,當(dāng)允許執(zhí)行的計(jì)算機(jī)名很多的時(shí)候,比如成百上千個(gè)計(jì)算機(jī)名都允許執(zhí)行,那么這些if條件就顯得非常臃腫,而且難以維護(hù)。

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

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

ZhanSan

LiSi

WangWu

ZhaoLiu

test-2-1.bat

使用 for 命令逐行判斷白名單里面的字符串是否跟當(dāng)前計(jì)算機(jī)名稱相匹配。如果能找到匹配的行,則把自定義變量 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è)務(wù)代碼放在下面
pause

test-2-2.bat

使用 findstr 命令判斷能否在白名單里面找到當(dāng)前計(jì)算機(jī)名稱。如果能找到,則系統(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è)務(wù)代碼放在下面
pause

有的人喜歡這個(gè)方法,因?yàn)樗麄冇X得維護(hù) txt 文件比較方便。也有的人不喜歡這個(gè)方法,是因?yàn)槌?bat 文件之外還要有個(gè)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è)務(wù)代碼放在下面
pause
goto :eof
REM 白名單放在結(jié)尾
:AllowList
ZhanSan
LiSi
WangWu
ZhaoLiu

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

用戶名

%username%

日期

%date%

時(shí)間

%time%

主板BIOS序列號(hào)

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

硬盤序列號(hào)

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

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

@echo off
REM 設(shè)置網(wǎng)絡(luò)適配器的名稱
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

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

相關(guān)文章

最新評(píng)論