[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理如何将ping不通、丢包的IP地址写入不同的文件?

文件IP.txt 内容如:
百度 www.baidu.com
搜狐 www.sohu.com
主机1 192.168.0.1
主机2 192.168.1.1
...

打开IP.txt文件,每一个地址ping 10次。
如果有丢包的ip地址 写入文件lost.txt;
如果全部ping不通,写入文件offline.txt;
将延迟超过20ms,写入文件latency.txt。

rem: 写入lost.txt和latency.txt文件格式为:序号. 主机名  IP地址 丢包 平均时延
rem: 写入offline.txt文件格式:序号. 主机名 IP地址


新手上路,请多多指教。
nice to meet u

本帖最后由 bigjohn 于 2019-6-15 17:58 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set count=0
  4. set lost=0
  5. set totallost=10
  6. if exist temp.txt del temp.txt
  7. if exist temp1.txt del temp1.txt
  8. if exist lost.txt del lost.txt
  9. if exist offline.txt del offline.txt
  10. for /f "usebackq delims=" %%a in (ip.txt)  do (
  11.     echo %%a>temp.txt
  12.    
  13.     set /a count+=1
  14.     set /p = !count!.  
  15.     set /p = No.!count!  >>temp1.txt
  16.    
  17.     for /f "tokens= 1 delims= " %%i in (temp.txt)   do  set /p =  %%i
  18.     for /f "tokens= 1 delims= " %%i in (temp.txt)   do  set /p = "%%i  " >>temp1.txt
  19.     for /f "tokens= 2 delims= " %%i in (temp.txt)   do  set /p = "%%i  "
  20.     for /f "tokens= 2 delims= " %%i in (temp.txt)   do  set /p = "%%i  " >>temp1.txt
  21.    
  22.     set b = %%a
  23.         
  24.     for /f "tokens=3 delims=," %%i in ('ping -n 1 "%b%"^|findstr /i "数据包  平均"') do set /p = "%%i  "
  25.     for /f "tokens=3 delims=," %%i in ('ping -n 1 "%b”^|findstr /i "数据包  平均"') do set /p = "%%i  " >>temp1.txt  
  26.    
  27.     echo. >>temp1.txt
  28.     echo.
  29.     echo.
  30. )<nul
  31. for /f "usebackq delims=" %%a in (temp1.txt) do (
  32.       
  33.     for /f "tokens=6 delims= " %%i in ('echo %%a^|findstr /i "丢失"')  do (   
  34.     if %lost%==%%i  echo %%a >> lost.txt  rem 调试用,不正确
  35.     if %totallost%==%%i  echo %%a >> offline.txt rem 调试用,不正确
  36.     )
  37. )<nul
复制代码
以上是我的程序,不知道为什么有时temp1.txt结果正确,有时就不正确。
新手上路,不太会用变量,只好不停地打开文件得到变量,执行效率非常低。
见笑了。
nice to meet u

TOP

回复 3# xczxczxcz


    感谢! 我得好好研究一下。
nice to meet u

TOP

本帖最后由 bigjohn 于 2019-6-15 21:40 编辑

回复 3# xczxczxcz


    Get-Content : 无法绑定参数“Encoding”。由于枚举值无效,无法将值“Default”转换为类型“Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding”。请指定以下枚举值之一,然后重试。可能的枚举值为“Unknown、String、Unicode、Byte、BigEndianUnicode、UTF8、UTF7、Ascii
”。
所在位置 行:1 字符: 34
+ $IP =(gc IP.txt -ReadCount 0 -enc <<<<  Default) | %{
    + CategoryInfo          : InvalidArgument: ( [Get-Content], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetContentCommand

正在测试连接  =......Test-Connection : 无法对参数“ComputerName”执行参数验证。该参数为 Null 或为空。请提供一个不为 Null 或不为空的参数,然后重试此命令。
所在位置 行:15 字符: 31
+     $n =Test-Connection -Computer <<<<  $i.ip -Count 10 -ErrorAction 'SilentlyContinue';
    + CategoryInfo          : InvalidData: (:) [Test-Connection], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.TestConnectionCommand

不能对值为空的表达式调用方法。
所在位置 行:18 字符: 31
+         $offLine +=$i.index.ToString <<<< ()+' '+$i.name+' '+$i.ip;
    + CategoryInfo          : InvalidOperation: (ToString:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

失败

还是得好好请教大神,感觉像天书呀。非常佩服,这么快就编写好了。
我的电脑是win7 sp1 ,用自带powershell_ise 运行显示以上错误。
麻烦看看是什么原因?  多谢了。
nice to meet u

TOP

回复 4# bigjohn


我对 powershell一窍不通,别笑话。
恳求占用你宝贵时间帮我按我的要求写一个程序吧。


多谢了。
nice to meet u

TOP

回复 8# xczxczxcz


    展开运算符“@”无法用于在表达式中引用变量。“@echo”只能用作命令的参数。若要在表达式中引用变量,请使用“$echo”。
At line:1 char:1

关键字“for”后缺少左括号“(”。
At line:18 char:5

表达式中缺少右括号“)”。
At line:19 char:9

“for”语句中的表达式后缺少右括号“)”。
At line:21 char:5

for 循环中缺少语句体。
At line:21 char:5

表达式中缺少右括号“)”。
At line:21 char:10

展开运算符“@”无法用于在表达式中引用变量。“@echo”只能用作命令的参数。若要在表达式中引用变量,请使用“$echo”。
At line:21 char:11

关键字“for”后缺少左括号“(”。
At line:25 char:14

表达式或语句中出现意外标记“^”。
At line:25 char:74

表达式中缺少右括号“)”。
At line:27 char:9

“for”语句中的表达式后缺少右括号“)”。
At line:27 char:9

for 循环中缺少语句体。
At line:27 char:9

表达式或语句中出现意外标记“^^^”。
At line:27 char:42

不允许使用空管道元素。
At line:27 char:45

表达式或语句中出现意外标记“)”。
At line:28 char:11

改变目录后还是报错。 给你填麻烦了。
nice to meet u

TOP

请教批处理为什么不能ping ?

IP.txt 数据格式为:
百度 www.baidu.com
搜狐 www.sohu.com
测试 192.168.1.1

读取文件ip.txt中每行第二列作为地址,为什么不行?
  1. ...
  2. for /f "tokens=1,2 delims=" %%a in (ip.txt)  do (
  3.     for /f "tokens=3 delims=," %%i in ('ping -n 10 %%b^|findstr /i "数据包  平均"') do (
  4.        set /p = "%%i  "
  5.        set /p = "%%i  ">>result.txt
  6.      )
  7.     echo. >>result.txt
  8. ...
  9. )<nul
复制代码
nice to meet u

TOP

回复 2# miqilaosu


    还是不太懂,麻烦直接改一下以上程序吧。多谢了
nice to meet u

TOP

回复 12# xczxczxcz


    程序Ok。我搞错了,用powershell了。多谢。
nice to meet u

TOP

回复 14# miqilaosu


    可以了。多谢!
nice to meet u

TOP

返回列表