中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 请教两条处理有什么区别呢? 上一主题 | 下一主题
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『楼 主』:  请教两条处理有什么区别呢?

请教下面两条处理有什么区别呢?批处理执行的时候第一条可以!第二条执行不了!可在命令行里都是可以运行的啊!
1、for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get caption') do echo %%i   
2、for /f "skip=1" %%i in ('wmic logicaldisk get caption') do echo %%i

2007-5-15 23:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

筛选条件不同,命令的结果自然不同。但是以上两种方法都可以在批处理里面执行的。

第一个指定了条件 "drivetype='3'" ,表示驱动类型为3的驱动器,这里表示固定磁盘,即C、D、E等磁盘。

第二个没有指定条件,将得到所有驱动器的盘符。如果有光盘或者软盘的话,也会显示相应的盘符。

2007-5-16 00:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by lxmxn at 2007-5-16 00:11:
筛选条件不同,命令的结果自然不同。但是以上两种方法都可以在批处理里面执行的。

第一个指定了条件 "drivetype='3'" ,表示驱动类型为3的 ...

我这里第二条在批处理里不能执行,不知道为什么!

2007-5-16 01:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 4 楼』:  

for /f "skip=1" %%i in ('wmic logicaldisk get caption') do echo %%i
在我这里执行很正常



正在潜水修练的批处理小白
2007-5-16 01:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  

我这里执行也很正常。

如果你的批处理里面还有其它的代码,可能不正常。

2007-5-16 01:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 6 楼』:  

没有其他的  就算COPY你上面的也不行
for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get caption') do echo %%i  这个可以
如果改成下面这样也不行:
for /f "skip=1 tokens=1,2 delims=, " %%i in ('wmic logicaldisk where "drivetype='3'" get caption,FreeSpace') do echo %%i %%j
郁闷!

[ Last edited by terse on 2007-5-16 at 02:03 AM ]

2007-5-16 01:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 7 楼』:  

先看看你的系统,如果不是XP(或以上)的是执行不了的

2007-5-16 08:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  

系统是XP 问题是下面第一条可在批处理里执行,其他不行,但都可在命令行里执行
1、for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get caption') do echo %%i   

2、for /f "skip=1" %%i in ('wmic logicaldisk get caption') do echo %%i

会是系统的事?

[ Last edited by terse on 2007-5-16 at 01:11 PM ]

2007-5-16 13:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 9 楼』:  

出错提示是什么?



正在潜水修练的批处理小白
2007-5-16 13:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 10 楼』:  

没提示  CMD窗口好象一闪  虽然命令后面有加:pause
完了!连昨天晚上都可以在批处理里运行是:for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get caption') do echo %%i  现在都不能运行,
把%%i改成%i  在命令行下可以运行

[ Last edited by terse on 2007-5-16 at 02:44 PM ]

2007-5-16 13:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 11 楼』:  

试试这个。
@echo off
for /f "skip=1 tokens=1-2" %%i in ('"wmic logicaldisk where 'drivetype=3' get Caption,FreeSpace"') do echo %%i %%j
pause


2007-5-16 15:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by lxmxn at 2007-5-16 15:05:
试试这个。
@echo off
for /f "skip=1 tokens=1-2" %%i in ('"wmic logicaldisk where 'drivetype=3' get Caption,FreeSpace"') do echo %%i %%j
pause

可以运行  
但有一个有趣的现象,假设我原先不能运行的批处理文件名为ABC.bat,现在我清空ABC.bat(变成0字节)!把上面的COPY到ABC.bat,一样不能运行了,
试着新建一个文档名为DEF.bat把上面的COPY到DEF.bat可以运行!

把你的内容变为:
@echo off
for /f "skip=1 tokens=1-2" %%i in ('"wmic logicaldisk get Caption,FreeSpace"') do echo %%i %%j
pause
一样可以运行, 把DEF.bat和ABC.bat名称互换结果是DEF.bat不能运行,ABC.bat又能运行!

[ Last edited by terse on 2007-5-16 at 07:58 PM ]

2007-5-16 19:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 13 楼』:  

估计ABC.bat的编码不是ANSI,批处理要求文件的编码必须为ANSI,另存为时选择一下编码,选择ANSI试试



正在潜水修练的批处理小白
2007-5-16 20:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by dikex at 2007-5-16 20:34:
估计ABC.bat的编码不是ANSI,批处理要求文件的编码必须为ANSI,另存为时选择一下编码,选择ANSI试试

果然如此  怎么加分给你呢?谢了哦!

2007-5-16 21:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: