中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [寻求完善]一个判断光驱的新办法
« [1] [2] »
作者:
标题: [寻求完善]一个判断光驱的新办法 上一主题 | 下一主题
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 16 楼』:  

还有点问题请教。

据说 fsutil 这个命令只能限制成管理员用, 而且XP Pro版才能用。

dir [drive] >nul 2>nul 这个太有用了。

但是否我们只能回到 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\WIN51 set CDROM=%%i

这个老路上去? 这条老路也有缺陷,就是要判断特定文件, 有无更好办法呢?

2008-5-28 22:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 17 楼』:  

根据26933062思路, 我做了个
@echo off&setlocal EnableDelayedExpansion
for /f "usebackq skip=1 tokens=2 delims==" %%a in (`findcd /s`) do (
  set "str=%%a"
  set "str=!str:~0,1!"
  dir !str!: >nul 2>nul
chcp 936>nul
  if !ERRORLEVEL! equ 0 (echo.&echo 光盘是 !str! 盘 里面有光盘) else (
     echo.&echo 光盘是 !str! 盘 无光盘
))
echo.&pause&exit
说明: findcd.exe 是第三方程序,只有3.11K

这个程序 findcd 如果加 /s 参数则列出多光盘,结果如下例:

CDROM=2
CDROM1=H:
CDROM2=I:

在老DOS下 会赋值给上述变量, 省却许多麻烦, 但在XP下却不能!而且会改变 codepage, 所以我加了条 CHCP 936。

实际运行结果如下:
光盘是 2 盘 里面有光盘

光盘是 H 盘 里面有光盘

光盘是 I 盘 里面有光盘

请按任意键继续. . .
怎么会多了一行,似乎 Skip=1 没用处,不解。

怎么没办法插入附件? 我想附上 findcd的程序。这儿下载

[ Last edited by quya on 2008-5-28 at 11:29 PM ]

2008-5-28 23:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 18 楼』:  

%var1%^|more
%var2% %%a:
11楼这招看起来很整洁啊!

[ Last edited by WANKOILZ on 2008-5-29 at 07:38 PM ]

2008-5-29 19:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: