Board logo

标题: 请问ping -n 1 127.1>nul是什么意思 [打印本页]

作者: sglxy     时间: 2006-10-25 02:15    标题: 请问ping -n 1 127.1>nul是什么意思

如题:在好几个批处理文件中看到“ping -n 1 127.1>nul”这个语句,请问ping -n 1 127.1>nul是什么意思?高手们能给讲讲吗?
作者: vkill     时间: 2006-10-25 02:17
开始/运行 hh ntcmds.chm::/ntcmds.htm
作者: 9527     时间: 2006-10-25 02:20
主要是起到延时的作用,其他好像没有了 127.1这个是本机的回环地址相当于127.0.0.1    不光127.0.0.1 可以写成127.1的形式,其他的IP地址类型也是可以的,例如: 61.0.0.28也是可以写诚61.28的形式的
作者: sglxy     时间: 2006-10-25 02:28
原来如此,谢谢两位朋友了!
作者: lxmxn     时间: 2006-10-25 08:23

  关于   ping -n 1 127.1>nul:

  1、ping是测试网络连接性的网络命令,参数"-n 1"表示只发送一次ICMPS数据包来测试网络的连接性。
  
  2、127.1表示本机保留IP地址,实际就是127.0.0.1,ping 127.1就表示ping 127.0.0.1,可以测试网卡及TCP/IP协议是否正常安装及工作。

  3、">nul"表示把命令产生的屏幕显示信息重定向(>)到空设备(nul),这样在屏幕上就没有显示ping命令的执行结果了。如果想屏蔽出错信息,可以用">nul 2>nul"屏蔽一切屏幕输出。

作者: xyxFlysky     时间: 2006-10-25 10:38
如果想屏蔽出错信息,可以用">nul 2>nul"屏蔽一切屏幕输出。

这句不太理解 -_-
作者: lxmxn     时间: 2006-10-25 11:04

Re:xyxFlysky
  这个">nul 2>nul"可以屏蔽一切屏幕的输出可以这样理解:

  假如你执行一个命令,但是不想在屏幕里看到这个命令的执行情况,可以使用"[命令]>nul"就可以屏蔽命令在屏幕上的输出了,但是有的命令执行会出错,即使用了">nul"也不能屏蔽命令产生的信息,所以就在后面加" 2>nul"这个,就是"[命令]>nul 2>nul",这样,不管命令是否正确的运行,都不会在屏幕看到这个命令所产生的屏幕显示了。

  我们举一个简单的例子吧。

  用"dir"命令可以显示当前目录的文件及文件夹列表,这时如果用"dir>nul",你就看不见dir命令执行的屏幕输出了,那么你再键入"dirr"会是什么情况呢?这时会显示" 'dirr' 不是内部命令,也不是外部命令,也不是批处理文件。",这时你也许会用"dirr>nul"来屏蔽这个错误提示,但是告诉你,你的猜想是错的,因为依然会出现" 'dirr' 不是内部命令,也不是外部命令,也不是批处理文件。"这个错误提示,这时如果你用"dirr>nul 2>nul"的话,你就在屏幕上看不到上面的出错提示了。不知道你再明白了没有。

  如果你想了解更多的关于nul的说明,可以在论坛里面搜索一下,可以搜索到willsort兄详细及精彩的关于nul用法的解说的。


[ Last edited by lxmxn on 2006-10-26 at 12:33 AM ]
作者: sglxy     时间: 2006-10-25 18:55


  Quote:
Originally posted by lxmxn at 2006-10-25 11:04 AM:

Re:xyxFlysky
  这个">nul 2>nul"可以屏蔽一切屏幕的输出可以这样理解:

  假如你执行一个命令,但是不想在屏幕里看到 ...

lxmxn兄的讲解非常详细让我明白了以前百思不得其解的疑团,真的非常感谢你的耐心指点,谢谢!
作者: redtek     时间: 2006-10-25 20:45
例子举得真生动,欣赏~:)
作者: amao     时间: 2006-10-26 00:05
lxmxn兄头像很酷,其本人也很有耐心,赞一个
作者: inhell     时间: 2006-10-26 03:00
如果懂linux的话 就很好理解空设备的概念了
作者: yangzhiyi     时间: 2006-10-29 00:49
ping -n 1 127.1>nul 这句怎么用啊,我正想要这样差不多的用法,
即执行 ping -n 1 127.1>nul 它会没任何信息,那么执行它干嘛?
贴上原文看看好吗

[ Last edited by yangzhiyi on 2006-10-29 at 12:51 AM ]
作者: zerocq     时间: 2006-10-29 00:53


  Quote:
Originally posted by yangzhiyi at 2006-10-29 00:49:
ping -n 1 127.1>nul 这句怎么用啊,我正想要这样差不多的用法,
即执行 ping -n 1 127.1>nul 它会没任何信息,那么执行它干嘛?
贴上原文看看好吗

[[i ...

利用ping命令让脚本运行延时,就是等待多少秒再运行下边的

精确度不知道:D

我用wscript.sleep:D
作者: yangzhiyi     时间: 2006-10-29 01:02
狂,批命令分步执行的还需用到延时,通常都是用转跳吧,用ping -n 1 127.1>nul 来延时更狂。
作者: zhwvip     时间: 2006-10-29 01:11
等到明年吗?
作者: zerocq     时间: 2006-10-29 01:13


  Quote:
Originally posted by yangzhiyi at 2006-10-29 01:02:
狂,批命令分步执行的还需用到延时,通常都是用转跳吧,用ping -n 1 127.1>nul 来延时更狂。

有些命令得到结果比较慢,偏偏下一步要用到结果的话要延时一下再运行下一步

不可能不停跳转跳来跳去吧o.o
作者: zhwvip     时间: 2006-10-29 01:26


  Quote:
Originally posted by zerocq at 2006-10-29 01:13:


有些命令得到结果比较慢,偏偏下一步要用到结果的话要延时一下再运行下一步

不可能不停跳转跳来跳去吧o.o

一般可以 start /w来解决等待结果的情况把?
作者: lxmxn     时间: 2006-10-29 02:33


  Quote:
一般可以 start /w来解决等待结果的情况把?

  用 start 命令会重新开一个CMD窗口或者其它的程序窗口,这样在某些情况下面是不合适的。

  而在很多情况下,用 ping 命令可以起到一定的效果,而且时间可以随意由你设定,虽然精确度不是很好。在批处理中,还是有很多地方用到 ping 命令来达到延时的目的的。
  

作者: wjdbar     时间: 2006-10-29 03:23
不错啊 值得表扬!~
作者: yangzhiyi     时间: 2006-10-29 03:30
如果在批命令中 跟本不需要延时
结果比较慢,偏偏下一步要用到结果  ???这步未执行完就不会到下一步,如果这步完成了,下一步也有结果可用了,DOS命令只有一个指针的啊,
如果在批处理中调用了其它程序或文件,start /w 就行,没有什么新窗口问题的。

我只知道用 choice 延时后自动输入值,
这个延时我真不知道怎么应用。
如果想多个批处理同时运行,所得的结果需要相互使用,这像的应用应该是错误的,难道这就是DOS下的多线程。
作者: tianzizhi     时间: 2006-10-29 04:06
choice 延时 :  choice /t 120 /d y  

延时单位为秒,上面即延时 120秒.
作者: lxmxn     时间: 2006-10-29 07:46

  如果一个命令执行得比较慢,而下一个命令要利用这个命令的结果,那么可以利用一下命令连接符"&&"和"||",比如:"command 1 && command 2 || command",这样,如果command 1执行成功之后,才执行command 2,如果不执行不成功的话,就执行command 3,也可以理解成command 2只有在command 1执行成功之后才执行。

作者: yangzhiyi     时间: 2006-10-29 08:18


  Quote:
Originally posted by lxmxn at 2006-10-29 07:46:

  如果一个命令执行得比较慢,而下一个命令要利用这个命令的结果,那么可以利用一下命令连接符"&&"和"||",栮..

但是command 3 也要在command 1 执行完后才执行啊。
作者: lxmxn     时间: 2006-10-29 08:25


  Quote:
Originally posted by yangzhiyi at 2006-10-29 08:18:


但是command 3 也要在command 1 执行完后才执行啊。


  那你的目的是想实现什么呢?

作者: yangzhiyi     时间: 2006-10-29 08:44
呵呵,我已理解 这命令有什么用了。
作者: lizaoyou     时间: 2007-2-10 05:55
win98或纯dos不支持>nul 2>nul,怎样实现屏蔽一切屏幕输出呢?
作者: qzwqzw     时间: 2007-2-10 06:00
ctty nul

恢复用 ctty con
作者: lizaoyou     时间: 2007-2-10 06:22
谢qzwqzw指点!解决了我多时的难题。
作者: csx163     时间: 2007-2-10 14:19
想不通为什么直接在DOS下是| 而BAT却需要||
作者: kwxsuper     时间: 2007-2-16 14:08
学习了>nul,,,,好东西
作者: gne3     时间: 2007-2-17 00:20
dir>nul 2>nul
中的2是上一个返回值在重定向到nul的意思。
我知道的呵呵
作者: mmyy525     时间: 2007-3-5 00:39
顶!学习了!
作者: blue812     时间: 2007-3-5 05:52
很仔细,学习了.谢谢!!!!!!!!!!!!
作者: wxjclh     时间: 2007-3-5 07:23
一直看不懂,终于明白了。感谢33楼以前的,尤其是lxmlxm!
作者: leoson88     时间: 2007-3-7 02:07
可以理解为>NUL屏蔽了正确返回信息
2>NUL屏蔽了错误返回的信息
作者: chengfdn     时间: 2007-3-7 04:37
又学一招,谢谢
作者: needalfan     时间: 2007-3-17 06:06
写得好啊!点点滴滴的学习。。。
作者: jianyaogao     时间: 2007-3-17 21:05
xue le heng duo o
作者: 574855721     时间: 2007-3-18 01:09
哦!
茅塞顿开啊!!!!
作者: 574855721     时间: 2007-3-18 01:11
如果还有不懂的看看这个批处理@echo off&mode con cols=80 lines=13&title,【%~n0】&setlocal,EnableDelayedExpansion&color 02
set a=To***:
set b=距离不代表分离,没联系不代表忘记,没通电话不代表冷落。祝你生日快乐,圣诞快乐,新年快乐,永远快乐……
set c=                                ------ by ***
set d=                                 2007-3-16
echo/&echo\
for %%i in (a b c d) do (
        set/p=      <nul
        for /l %%a in (0,1,100) do (
                if not "!%%i:~%%a,1!"=="" (
                        if %%a==24 echo.&echo;
                        set/p= !%%i:~%%a,1!<nul
                        ping 127.1 -n 1 >nul
                )
        )
        echo;&echo;
)
for /l %%i in (0x1,0x1,0x9) do (
        set /a b=%%i ">>" 1
        ::call :modify %%i
        set a=%%i
        color !a!!b!
        ping 127.1 -n 2 >nul)
ping 127.1 -n 3 >nul
goto :print
:end
echo.&echo.
ping 127.0.0.1 -n 7 >nul 2>nul
goto :eof

:print
cls&color 04&echo\&echo\&echo\&for /f "delims=" %%a in ('more +38 %0') do echo              %%a
mshta vbscript:CreateObject("SAPI.SpVoice").Speak("Happy birthday to you!")(Window.close)
goto :end



       iiiiiiiiiiiiiiiiiii      祝 ***:
     |||||||||||||||||||||||
   __|______H_a_p_p_y______|__       生日快乐
  |\/\/\/\/\/\/\/\/\\/\/\/\/\/|
  |||||| B i r t h d a y ||||||                     天天开心……
  |,,,,,,,,,,,,,,,,,,,,,,,,,,,|
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@        越来越漂亮……

--------------------------------------------------------------------------------
作者: axi     时间: 2007-3-22 06:09
mshta vbscript:CreateObject("SAPI.SpVoice").Speak("Happy birthday to you!")(Window.close)

此句能使批处理发声,精彩极!
作者: swallow     时间: 2007-3-26 09:22
又学到点东西,今天没白过。嘿嘿!
作者: hy433124shc     时间: 2007-4-2 05:28


  Quote:
Originally posted by axi at 2007-3-21 05:09 PM:
mshta vbscript:CreateObject("SAPI.SpVoice").Speak("Happy birthday to you!")(Window.close)

此句能使批处理发声,精彩极!

语速太快,发音不太对,不能发拼音,

以上不足能解决吗?

希望高手给说下!
作者: minmin888     时间: 2007-4-20 08:55
学到东西!多谢高手!
作者: tongwandou     时间: 2007-4-20 09:01
我也明白了!
作者: Vampire     时间: 2007-4-20 09:43
40楼的那个批处理例子让人热血沸腾啊……
作者: lxmxn     时间: 2007-4-20 23:54
To 40楼:

转我的帖子请注明原作者,OK?

原处在这里:http://www.cn-dos.net/forum/viewthread.php?tid=26633&fpage=1
作者: windy     时间: 2007-5-17 19:53
经典啊!学习了!up!
作者: firefox     时间: 2007-7-8 18:02
很经典,谢谢lxmxn和各位了。
茅塞顿开。。
作者: Li103Z     时间: 2007-11-18 09:43
太棒了,收藏
作者: huahua0919     时间: 2007-11-18 12:19
1为 标准设备输出,一般为屏幕输出(STDOUT)
2为 错误输出(ERROUT)
所以上面的还可以 dir 1>nul 2>nul (不要1的原因是系统默认是标准输出)
作者: jsline     时间: 2007-11-21 22:01
学习....
作者: ldr2zjj     时间: 2007-11-22 22:03
好强啊`~~~顶了`~~学会了好多啊`~~但是我还有一个问题`~就是
命令>nul
是屏蔽信息的``那他会执行吗??他跟@echo off 有什么分别???
作者: wantflying     时间: 2007-11-22 23:46
学习....
作者: INeverAsk     时间: 2007-11-23 07:28
实例分解最适合我这样的新手了.
作者: che11n     时间: 2007-11-26 00:06
又学到了东西..
作者: wyangwo     时间: 2007-11-26 09:31
lxmxn讲的真详细,受用了
作者: sbqwww     时间: 2007-11-28 10:51
明白了,谢谢兄弟啊
作者: vipchenlang     时间: 2007-12-2 14:58
恩,不错不错
作者: Jneny     时间: 2007-12-2 19:14
那个是发声的批处理是怎么搞的, 现在还没有搞明白。
  
     NUL  确实用处很大。
作者: icydawn     时间: 2007-12-2 19:43
用ping -n 1 127.1>nul 是用来延迟的!!
一般的批处理要是进行循环的话,不需要那么高的执行频率,往往5-10s就可以了,但是你不加延迟,不断执行有些指令会占用很多的CPU资源.寻求一个平衡!
作者: airufo     时间: 2007-12-3 16:27
xuexue
作者: 8277533     时间: 2007-12-22 00:26
我喜欢这种解释方法再自己去实践一下
作者: bbs4033     时间: 2008-1-6 17:36
学习了
作者: hsyxh     时间: 2008-2-14 20:17
学会了nul的使用,哈哈。
作者: woshiff     时间: 2008-2-15 20:23
5,够猛
作者: yuehong     时间: 2008-3-5 16:54
学习了,非常感谢
作者: lbccyxs     时间: 2008-3-14 17:10
好。收藏了。
作者: shuiyin313     时间: 2008-3-15 00:59
nul是内部参数吗?
为什么会在各版本的DOS下都会出现?
是不是于C&C++中NULL类似?
作者: shuiyin313     时间: 2008-3-15 01:01
对了  还问个比较低级的问题

是不是DELAY.EXE的原理也和ping -n 1 127.1>nul  一样  或者就是这样做的呢?
作者: lxmxn     时间: 2008-3-15 01:11    标题: RE shuiyin313:

1、nul 不是什么参数,只是DOS/Windows下面的设备名,表示空设备,什么都没有,可以理解成宇宙中的黑洞。

2、Delay.exe 的原理肯定是不是通过ping来实现的了,想知道原理的话可以反汇编Delay.exe来看看它的反汇编代码来分析分析。
作者: shuiyin313     时间: 2008-3-18 03:35


  Quote:
Originally posted by lxmxn at 2008-3-15 01:11 AM:
1、nul 不是什么参数,只是DOS/Windows下面的设备名,表示空设备,什么都没有,可以理解成宇宙中的黑洞。

2、Delay.exe 的原理肯定是不是通过ping来实 ...

thank you for your answer.
作者: smtdd     时间: 2008-3-24 23:45
这里的人很热情...哈哈

感谢!学习了!!非常感谢!!!
作者: wkanging     时间: 2008-12-10 11:11
的确学到不少,但还是立足于际工作应用中就好!