![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 15:27 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教两条处理有什么区别呢? |
| 可打印版本 1,015 / 13 |
| 第1楼 terse | 发表于 2007-05-15 23:21 |
| 银牌会员 发帖 946 积分 2,404 | |
|
请教两条处理有什么区别呢? 请教下面两条处理有什么区别呢?批处理执行的时候第一条可以!第二条执行不了!可在命令行里都是可以运行的啊!
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 |
|
| 第2楼 lxmxn | 发表于 2007-05-16 00:11 |
| 版主 发帖 4,938 积分 11,386 | |
|
筛选条件不同,命令的结果自然不同。但是以上两种方法都可以在批处理里面执行的。
第一个指定了条件 "drivetype='3'" ,表示驱动类型为3的驱动器,这里表示固定磁盘,即C、D、E等磁盘。 第二个没有指定条件,将得到所有驱动器的盘符。如果有光盘或者软盘的话,也会显示相应的盘符。 |
|
| 第3楼 terse | 发表于 2007-05-16 01:06 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by lxmxn at 2007-5-16 00:11: 我这里第二条在批处理里不能执行,不知道为什么! |
|
| 第4楼 dikex | 发表于 2007-05-16 01:18 |
| 高级用户 发帖 366 积分 788 | |
|
for /f "skip=1" %%i in ('wmic logicaldisk get caption') do echo %%i
在我这里执行很正常 |
|
| 第5楼 lxmxn | 发表于 2007-05-16 01:28 |
| 版主 发帖 4,938 积分 11,386 | |
|
我这里执行也很正常。
如果你的批处理里面还有其它的代码,可能不正常。 |
|
| 第6楼 terse | 发表于 2007-05-16 01:54 |
| 银牌会员 发帖 946 积分 2,404 | |
|
没有其他的 就算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 ] |
|
| 第7楼 ansipeter | 发表于 2007-05-16 08:44 |
| 中级用户 发帖 130 积分 269 | |
|
先看看你的系统,如果不是XP(或以上)的是执行不了的
|
|
| 第8楼 terse | 发表于 2007-05-16 13:09 |
| 银牌会员 发帖 946 积分 2,404 | |
|
系统是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 ] |
|
| 第9楼 dikex | 发表于 2007-05-16 13:21 |
| 高级用户 发帖 366 积分 788 | |
|
出错提示是什么?
|
|
| 第10楼 terse | 发表于 2007-05-16 13:44 |
| 银牌会员 发帖 946 积分 2,404 | |
|
没提示 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 ] |
|
| 第11楼 lxmxn | 发表于 2007-05-16 15:05 |
| 版主 发帖 4,938 积分 11,386 | |
|
试试这个。
|
|
| 第12楼 terse | 发表于 2007-05-16 19:48 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by lxmxn at 2007-5-16 15:05: 可以运行 但有一个有趣的现象,假设我原先不能运行的批处理文件名为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 ] |
|
| 第13楼 dikex | 发表于 2007-05-16 20:34 |
| 高级用户 发帖 366 积分 788 | |
|
估计ABC.bat的编码不是ANSI,批处理要求文件的编码必须为ANSI,另存为时选择一下编码,选择ANSI试试
|
|
| 第14楼 terse | 发表于 2007-05-16 21:13 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by dikex at 2007-5-16 20:34: 果然如此 怎么加分给你呢?谢了哦! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |