![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 16:27 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » (已结)如何用echo命令输出另外一个命令的执行结果 |
| 可打印版本 2,615 / 9 |
| 第1楼 echo108 | 发表于 2005-08-30 11:53 |
| 初级用户 发帖 6 积分 36 | |
|
(已结)如何用echo命令输出另外一个命令的执行结果 下面这个echo命令。
echo %date% %time% 结果是: 但是这个命令: echo Totally %dir | find "txt" /C% text files 原本想用这条命令输出: Totally 5 text files 但是系统报错:FIND: Invalid switch 单独执行 dir | find "txt" /C 命令,不会出错,返回一个数字,但是放在echo命令中就不行。 各位大虾,帮帮忙看看! ![]() [ Last edited by willsort on 2005-9-3 at 08:45 ] |
|
| 第2楼 JonePeng | 发表于 2005-08-30 12:37 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
呵呵,楼主误以为只要套上 %...% 就可以任意引用输出结果,这是不对的。要将输出结果作为环境变量,需要第三方工具,如 LMOD。借助它批处理就可以这样写:
@echo off dir | find "txt" /C | lmod @set x=[] >tmp.bat call tmp.bat echo Totally %x% text files del tmp.bat 如果不用其它工具,单靠DOS命令我就想不出办法了,这要问一问高手了。 |
|
| 第3楼 JonePeng | 发表于 2005-08-30 15:29 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
补充一点:
经测试,运行 dir | find "txt" /C 并不能如实地返回文件的正确数目,对于扩展名为“Txt”、“TXt”等的文件,find命令并不统计它们,原因在于 find 命令默认情况下对字母大小写很敏感,应该加上“忽略大小写”的参数(“/i”)。 另外,如果主文件名包含“txt”(像“txty_01.dat”、“itxt.jpg”等非txt文件),这条命令也可能将这类文件作统计,所以统计结果将有误差。解决办法是将 find 命令双引号内的扩展名加上一点:“.txt”。 @echo off |
|
| 第4楼 Michael | 发表于 2005-08-30 19:21 |
| 钻石会员 发帖 3,041 积分 10,056 | |
|
就是就是,%date%并不代表执行了date命令,只是因为系统用%date%这个变量指示当前日期,用%time%指示当前时间。
|
|
| 第5楼 Climbing | 发表于 2005-08-30 22:04 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
用willsort的debug大法加上find的命令输出,就可以避免使用第三方工具。
|
|
| 第6楼 tigerpower | 发表于 2005-08-30 23:50 |
| 中级用户 发帖 99 积分 377 | |
|
在xp下好象可以这样玩:
@for /f %i in ('dir ^| find "txt" /C') do echo Totally %i text files [ Last edited by tigerpower on 2005-8-31 at 21:23 ] |
|
| 第7楼 echo108 | 发表于 2005-08-31 10:01 |
| 初级用户 发帖 6 积分 36 | |
Originally posted by tigerpower at 2005-8-30 23:50: 啊,这个方法超巧妙!DOS好像越来越好玩了。 其实我是受了UNIX的影响,在UNIX里面用两个·号夹着的命令结果是可以在echo命令中输出的。 各位大人个出奇招,个个身手不凡。受教了,谢谢! |
|
| 第8楼 echo108 | 发表于 2005-08-31 10:05 |
| 初级用户 发帖 6 积分 36 | |
Originally posted by JonePeng at 2005-8-30 15:29: 这个我考虑的不是很周到,嘻嘻,多谢指点。 |
|
| 第9楼 lixiaoliang88 | 发表于 2005-08-31 10:51 |
| 新手上路 发帖 1 积分 8 | |
|
呵,慢慢學,,
|
|
| 第10楼 JonePeng | 发表于 2005-08-31 16:26 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
Originally posted by tigerpower at 2005-8-30 23:50: 哈哈,这个用得很妙!我建议再修改成这样才好: @for /f %i in ('dir ^| find ".txt" /I /C') do echo Totally %i text files |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |