【问题标题】:Run command based on IP address from text file根据文本文件中的 IP 地址运行命令
【发布时间】:2016-12-12 14:05:50
【问题描述】:

我最近换了工作,开始着手编写一些我一直想学习的脚本。我得到了一个现有的批处理文件,并想对其进行修饰。以前,此批处理文件会扫描提示您输入的 IP 地址。我想更改它以根据文本文件中的 IP 地址列表循环命令,只是我在这样做时遇到了问题。

我认为我可以通过以下两种方式之一:

1) 运行将获取 IP 地址的批处理文件,然后根据该 IP 地址运行第二批。

2) 只需使用一个现有的批处理文件,然后根据文本文件每一行的 IP 地址将其更改为循环。

什么是更好的方法,你将如何实现这两者?

对于#1,我尝试这样做,但我不知道如何根据我输入的内容运行命令。这方面的一个例子是运行 batch.bat 192.168.1.1,在 batch.bat 中它会尝试 ping 192.168.1.1(或输入的任何内容)。

【问题讨论】:

  • 你应该编辑你的问题并添加你的代码

标签: batch-file command prompt


【解决方案1】:

假设您已经有一个名为 IP_List.txt 的文本文件,其中包含以下内容:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
192.168.1.8
192.168.1.9
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
192.168.1.15
192.168.1.16
192.168.1.17
192.168.1.18
192.168.1.19
192.168.1.20
www.google.com
www.stackoverflow.com

你可以试试这个批处理文件:MultiPingTester.bat

@echo off
Title Multi-Ping hosts Tester with colors by Hackoo 2016
call :init
set "MyFile=IP_List.txt"
If Not exist %MyFile% goto error
mode con cols=65 lines=30
set "LogFile=PingResults.txt"
If exist %LogFile% Del %LogFile%
echo(
call :color 0E "      ------- Ping status of targets hosts -------" 1
echo(
(
    echo ******************************************************
    echo   PingTest executed on %Date% @ Time %Time%
    echo ******************************************************
    echo(
) > %LogFile%
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in ("%MyFile%") do (
    ping -n 1 %%a | find "TTL=" >nul
    if errorlevel 1 (
        call :color 0C " Host %%a not reachable KO" 1 & echo Host %%a not reachable KO >>%LogFile%
    ) else (
        call :color 0A " Host %%a reachable OK" 1 & echo Host %%a reachable OK >>%LogFile%
    )
)
EndLocal
Start "" %LogFile%
pause>nul & exit
::************************************************************************************* 
:init
prompt $g
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a"
exit /b
::*************************************************************************************
:color
set nL=%3
if not defined nL echo requires third argument & pause > nul & goto :eof
if %3 == 0 (
    <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
) else if %3 == 1 (
    echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
)
exit /b
::*************************************************************************************
:error
mode con cols=70 lines=3
color 0C
cls
echo(
 echo       ATTENTION !!!  Check if the file "%MyFile%" exist !
pause>nul & exit
::*************************************************************************************

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2013-02-04
    • 2020-06-03
    • 2018-04-26
    相关资源
    最近更新 更多