Board logo

标题: [系统相关] [已解决]批处理如何根据IP地址判断是否执行程序? [打印本页]

作者: wlishihua    时间: 2021-8-14 12:57     标题: [已解决]批处理如何根据IP地址判断是否执行程序?

查询IP地址,与对应的IP地址就执行程序,反之就exit
例如:
192.168.1.1  start 111.EXE
192.168.1.2  start DDD.EXE
192.168.1.3  start AAA.EXE
192.168.1.4  start BBB.EXE
192.168.1.5  start WWW.EXE
192.168.1.6  start 222.EXE
192.168.1.7  start 33.EXE
192.168.1.8  start 444.EXE
192.168.1.9  start 555.EXE
192.168.1.10  start 666.EXE
192.168.1.11 start 777.EXE
192.168.1.12  start 888.EXE
192.168.1.13  start 999.EXE
192.168.1.14  start 0000.EXE
192.168.1.15 start EEE.EXE
192.168.1.16 start RRR.EXE
192.168.1.17 start RTY.EXE
192.168.1.18 start UUU.EXE
192.168.1.19 start III.EXE
192.168.1.20 start OOO.EXE
。。。。。。。。。。。。。。。。
查到电脑IP为192.168.1.2 就执行DDD.EXE
没有查到就退出脚本
作者: idwma    时间: 2021-8-14 13:14

本帖最后由 idwma 于 2021-8-14 13:26 编辑
  1. @echo off
  2. call :n 111.exe ddd.exe aaa.exe ............
  3. goto :eof
  4. :n
  5. for /l %%i in (1,1,20) do (
  6. ipconfig|find "192.168.1.%%i"&&start %1
  7. shift
  8. )
复制代码

作者: wlishihua    时间: 2021-8-14 13:46

回复 2# idwma


不明白
作者: idwma    时间: 2021-8-14 14:00

回复 3# wlishihua


    那里不明白?
作者: yakeyun    时间: 2021-8-14 14:07

本帖最后由 yakeyun 于 2021-8-14 14:21 编辑

回复 1# wlishihua


@echo off
cd /d %~dp0
for /f "delims=: tokens=1,2" %%a in ('ipconfig ^|find "IPv4"') do echo,%%b&set ips=%%b
if %ips% == 192.168.1.123 start 111.EXE
if %ips% == 192.168.1.2  start DDD.EXE
if %ips% == 192.168.1.3  start AAA.EXE
..............
exit
作者: wlishihua    时间: 2021-8-14 14:10

回复 4# idwma
你那个代码同我所表达的意思不一样,我所想的是,我不知道这台电脑的IP地址,查询 之后如果是192.168.1.2 就可执行我所要求的程序,如果检测没有这个IP(192.168.1.2)就通出脚本
作者: wlishihua    时间: 2021-8-14 14:15

本帖最后由 wlishihua 于 2021-8-14 14:18 编辑

回复 5# yakeyun


    一闪而过
@echo off
cd /d %~dp0
for /f "delims=: tokens=1,2" %%a in ('ipconfig ^|find "IPv4"') do (
if "%%b" = 192.168.1.1  start mhtcgi.exe
if "%%b" = 192.168.1.2  start Microsoft Edge.lnk

exit
作者: yakeyun    时间: 2021-8-14 14:21

回复 7# wlishihua


再看看
作者: idwma    时间: 2021-8-14 14:25

本帖最后由 idwma 于 2021-8-14 14:26 编辑

回复 6# wlishihua


    这样啊
  1. @echo off
  2. call :n 111.exe ddd.exe aaa.exe ............
  3. goto :eof
  4. :n
  5. for /l %%i in (1,1,1) do (
  6. shift
  7. )
  8. ipconfig|find "192.168.1.2"&&start %1
复制代码

作者: wlishihua    时间: 2021-8-14 15:41

回复 5# yakeyun


  正常运行,谢谢!
作者: wlishihua    时间: 2021-8-14 15:51

回复 9# idwma


   不是的

楼上正解
作者: idwma    时间: 2021-8-14 15:56

回复 11# wlishihua


    最初的那个应该也可以吧,你不试一下我不知道那里错了.
作者: idwma    时间: 2021-8-14 16:04

回复 11# wlishihua


    只能自己上机了
  1. @echo off
  2. call :n 111.exe ddd.exe aaa.exe ............
  3. pause
  4. goto :eof
  5. :n
  6. set/a n+=1
  7. ipconfig|find "192.168.1.%n%"&&start %1
  8. shift
  9. if not %n%==20 goto :n
复制代码

作者: wlishihua    时间: 2021-8-14 18:20

回复 13# idwma


   真的不行,
作者: idwma    时间: 2021-8-14 18:53

本帖最后由 idwma 于 2021-8-14 19:02 编辑

回复 14# wlishihua

尴尬之前把网关也包括进去了
    那再改一下这样呢
  1. @echo off
  2. call :n 111.exe ddd.exe aaa.exe ............
  3. pause
  4. goto :eof
  5. :n
  6. set/a n+=1
  7. ipconfig|findstr /i "^ipv4.*192.168.1.%n%"&&start %1&&goto :eof
  8. shift
  9. if not "%n%"=="" goto :n
复制代码

作者: wlishihua    时间: 2021-8-14 20:15

回复 15# idwma


   运行时就一个黑框,不走了
作者: idwma    时间: 2021-8-14 20:22

回复 16# wlishihua


    那这样看行不行
  1. @echo off
  2. call :n 111.exe ddd.exe aaa.exe ............
  3. pause
  4. goto :eof
  5. :n
  6. set/a n+=1
  7. ipconfig|findstr /i "ipv4.*192\.168\.1\.%n%"&&start %1&&goto :eof
  8. shift
  9. if not "%n%"=="" goto :n
复制代码

作者: wlishihua    时间: 2021-8-14 20:38

回复 17# idwma


    OK,但是只能启动exe,不能启动快捷方式
作者: wlishihua    时间: 2021-8-14 20:42

回复 18# wlishihua
写法不太好理解,就是说111.exe对应的是192.168.1.1  DDD.EXE 对应的就是192.168.1.2  依次类推,是吗?
查询从192.168.1.1开始,到192.168.1.255结束
作者: wlishihua    时间: 2021-8-14 20:46

本帖最后由 wlishihua 于 2021-8-14 20:50 编辑

回复 17# idwma


@echo off
cd /d %~dp0
for /f "delims=: tokens=1,2" %%a in ('ipconfig ^|find "IPv4"') do echo,%%b&set ips=%%b
if %ips% == 192.168.1.1start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.2  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.3  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"

exit
这个好理解,能启动lnk文件

比如说从192.168.2到192.168.100,只执行一个文件  192.168.101到192.168.253  又执行另外一个文件,你那个代码怎么办?
作者: wlishihua    时间: 2021-8-14 20:54

本帖最后由 wlishihua 于 2021-8-14 20:59 编辑

回复 17# idwma

@echo off
cd /d %~dp0
for /f "delims=: tokens=1,2" %%a in ('ipconfig ^|find "IPv4"') do echo,%%b&set ips=%%b
if %ips% == 192.168.1.1  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.2  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.3  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.4  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"

if %ips% == 192.168.1.5  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.6  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.7  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.8  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
.........
exit
::四个IP地址为一组

你那个代码怎么写
if %ips% == 192.168.1.1  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.2  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.3  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.4  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
如果是253个IP,那么这个就要写253个IP地址,能不能简化一下
作者: wlishihua    时间: 2021-8-14 21:00

回复 5# yakeyun


    @echo off
cd /d %~dp0
for /f "delims=: tokens=1,2" %%a in ('ipconfig ^|find "IPv4"') do echo,%%b&set ips=%%b
if %ips% == 192.168.1.1  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.2  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.3  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.4  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"

if %ips% == 192.168.1.5  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.6  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.7  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
if %ips% == 192.168.1.8  start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
.........
exit
::四个IP地址为一组

代码怎么写
if %ips% == 192.168.1.1  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.2  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.3  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
if %ips% == 192.168.1.4  start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
如果是253个IP,那么这个就要写253个IP地址,能不能简化一下 用分组的方式
作者: idwma    时间: 2021-8-14 21:19

回复 21# wlishihua

改一下可以快捷方式
    好像也可以四个一跳,后面的多少一跳以此类推来改
这里的1到4,4到8,8到253
  1. @echo off
  2. call :n "C:\Users\Administrator\Desktop\Microsoft Edge.lnk" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
  3. pause
  4. goto :eof
  5. :n
  6. set/a n+=1
  7. ipconfig|findstr /i "ipv4.*192\.168\.1\.%n%"&&start "" "%~1"&&goto :eof
  8. if %n%==4 shift
  9. if %n%==8 shift
  10. if %n%==253 shift
  11. if not "%n%"=="" goto :n
复制代码

作者: wlishihua    时间: 2021-8-14 21:36

回复 23# idwma


    OK  谢谢!
作者: wlishihua    时间: 2021-8-14 21:39

本帖最后由 wlishihua 于 2021-8-14 21:58 编辑

回复 23# idwma
还是这样我们以MAC地址来确定,


@ipconfig /all|FIND /I "4C-CC-6A-FC-D6-59">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"
@ipconfig /all|FIND /I "4C-CC-68-FC-D6-58">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\MHTCGI\mhtcgi.exe"

@ipconfig /all|FIND /I "4C-CC-69-FC-D6-60">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"
@ipconfig /all|FIND /I "4C-CC-6A-FC-D6-61">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\Microsoft Edge.lnk"

@ipconfig /all|FIND /I "4C-CC-65-FC-D6-66">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\ddd.exe"
@ipconfig /all|FIND /I "4C-CC-6A-FC-D6-88">NUL 2>NUL&& start "" "C:\Users\Administrator\Desktop\ddd.exe"
这个怎么分组?
分不了组我就要写253个
作者: idwma    时间: 2021-8-14 22:17

回复 25# wlishihua

这个地址不连序
    如果先把这两百多个mac按顺序排列好,也可以操作一下




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2