Нужна пакетная команда для получения MAC-адреса и сравнения в текстовом файле? - PullRequest
0 голосов
/ 23 октября 2018

Как получить MAC-адрес компьютера и перезагрузить компьютер, если mac отсутствует в list.txt ?, у меня есть только эта команда получения mac,

for /f "tokens=3 delims=," %%a in ('"getmac /v /fo csv | findstr Ethernet"') do set MAC=%%a 
echo MAC address of this computer is %MAC%

1 Ответ

0 голосов
/ 23 октября 2018
  1. Вы используете getmac и передаете результат через findstr для фильтрации на требуемом сетевом адаптере.
    • Результат сохраняется в переменной ThisPCMAC
  2. . Вы используете команду type, чтобы получить содержимое файла list.txt, переданного по каналу findstr.фильтровать по ThisPCMAC.
    • Результат сохраняется в переменной FoundMAC.
  3. Если определено FoundMAC, вы goto :norestart
  4. Если FoundMAC равноВы не определились goto :restart
  5. В :restart вы звоните shutdown /r с необходимыми дополнительными параметрами
  6. Если ошибаетесь, вы можете позвонить shutdown /a в отведенное время (10 минут здесьсм. /t 600).
  7. Для получения дополнительной помощи см. shutdown /?

2 файла должны находиться в одном каталоге.Пример содержимого list.txt:

FF-AA-BB-CC-DD-FA
FF-AA-BB-CC-DD-FB
FF-AA-BB-CC-DD-FC

Содержимое RestartIfThisPCMACnotInList.bat:

@echo off

set ScriptPath=%~dp0
set ThisPCMAC=
set FoundMAC=

echo.
echo ScriptPath = %ScriptPath%


for /f "tokens=3 delims=," %%a in ('"getmac /v /fo csv | findstr Ethernet"') do set ThisPCMAC=%%a
echo.
echo MAC address of this computer is %ThisPCMAC%

for /F "usebackq delims==" %%b in (`"type %ScriptPath%list.txt | findstr %ThisPCMAC%"`) do set FoundMAC=%%b

if DEFINED FoundMAC (
   goto :norestart
) else (
   goto :restart
)


:norestart
echo.
echo Found %FoundMAC% in %ScriptPath%list.txt: Nothing to do.
goto :end


:restart
echo.
echo %ThisPCMAC% not found in %ScriptPath%list.txt: Restarting...
echo.
echo shutdown /r /f /t 600 /d p:00:00
shutdown /r /f /t 600 /d p:00:00
echo.
echo Cancel restart with the following command:
echo    shutdown /a
goto :end


:end
echo.
echo %~fp0 ended.
pause

Пример вывода для :norestart:

C:\test\>RestartIfThisPCMACnotInList.bat

ScriptPath = C:\test\

MAC address of this computer is "FF-AA-BB-CC-DD-FA"

Found FF-AA-BB-CC-DD-FA in C:\test\list.txt: Nothing to do.

C:\test\RestartIfThisPCMACnotInList.bat ended.
Press any key to continue . . .

Пример вывода для :restart:

C:\test\>RestartIfThisPCMACnotInList.bat

ScriptPath = C:\test\

MAC address of this computer is "FF-AA-BB-CC-DD-FD"

"FF-AA-BB-CC-DD-FD" not found in C:\test\list.txt: Restarting...

shutdown /r /f /t 600 /d p:00:00

Cancel restart with the following command:
   shutdown /a

C:\test\RestartIfThisPCMACnotInList.bat ended.
Press any key to continue . . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...