中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-19 03:35
47,814 主题排行 / 349,908 发帖 / 今日 1 篇 / 48,259 会员排行
DOS疑难解答 & 问题讨论 (解答室) » 在本论坛看到的个代码但是不知道原理是什么?
可打印版本  723 / 4
第1楼 handan 发表于 2007-12-29 11:20
初级用户 发帖 12 积分 30
在本论坛看到的个代码但是不知道原理是什么?
@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
)
这个能判断出最后的盘符 是什么原理呢
谢谢了
第2楼 lxmxn 发表于 2007-12-29 12:09
版主 发帖 4,938 积分 11,386
依次从Z循环处理到C,注意这里是逆序的,所以如果if语句检测出哪个盘符可用,那么显示这个盘符并且退出,所以基本可以判断最后的盘符。
第3楼 handan 发表于 2007-12-29 20:30
初级用户 发帖 12 积分 30
那这里的NUL有什么作用呀
第4楼 ngd 发表于 2007-12-31 22:58
中级用户 发帖 108 积分 312
@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”配合使用,以达到使一般用户看不到任何信息的目的。
第5楼 everdos 发表于 2008-01-01 10:10
初级用户 发帖 21 积分 52
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:\是一样的
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023