Board logo

标题: 在本论坛看到的个代码但是不知道原理是什么? [打印本页]

作者: handan     时间: 2007-12-29 11:20    标题: 在本论坛看到的个代码但是不知道原理是什么?
@echo off
for %%i in (Z Y X W V U T S R Q P L O N M L K J I H G F E D C ) do (
if exist %%i:\nul echo 最后的盘符为 %%i & pause>nul && goto :eof
)
这个能判断出最后的盘符 是什么原理呢
谢谢了

作者: lxmxn     时间: 2007-12-29 12:09
依次从Z循环处理到C,注意这里是逆序的,所以如果if语句检测出哪个盘符可用,那么显示这个盘符并且退出,所以基本可以判断最后的盘符。

作者: handan     时间: 2007-12-29 20:30
那这里的NUL有什么作用呀

作者: ngd     时间: 2007-12-31 22:58
@echo off
for %%i in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do if exist %%i:\ echo %%i
pause>nul


>nul 即输出为空
例:ping 127.1 >nul
ping回环地址127.0.0.1 但执行结果不显示在屏幕上

另外还有 >nul 2>nul
此意为屏蔽错误输出


在批处理里“>nul”往往和“@”及“@echo off”配合使用,以达到使一般用户看不到任何信息的目的。

作者: everdos     时间: 2008-1-1 10:10    标题: dos里有几个预定义的设备
比如con代表显示设备,prn代表打印设备,nul代表空设备
大于号">"表示将前面程序的输出内容重新定向到">"后面的设备,比如
type a.txt表示在屏幕上显示a.txt的内容,
而type a.txt > prn表示将a.txt的内容送到打印机(类似于copy a.txt prn)
pause >nul表示执行pause命令,但不显示pause提示内容
c:\nul与c:\是一样的