中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (已结)如何用echo命令输出另外一个命令的执行结果
作者:
标题: (已结)如何用echo命令输出另外一个命令的执行结果 上一主题 | 下一主题
echo108
初级用户





积分 36
发帖 6
注册 2005-8-26
状态 离线
『楼 主』:  (已结)如何用echo命令输出另外一个命令的执行结果

下面这个echo命令。

echo %date% %time%

结果是: [30/08/2005 11:36:27.79]

但是这个命令: 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 ]

2005-8-30 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 2 楼』:  

呵呵,楼主误以为只要套上 %...% 就可以任意引用输出结果,这是不对的。要将输出结果作为环境变量,需要第三方工具,如 LMOD。借助它批处理就可以这样写:

@echo off
dir | find "txt" /C | lmod @set x=[] >tmp.bat
call tmp.bat
echo Totally %x% text files
del tmp.bat

如果不用其它工具,单靠DOS命令我就想不出办法了,这要问一问高手了。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-8-30 12:37
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 3 楼』:  

补充一点:

经测试,运行 dir | find "txt" /C 并不能如实地返回文件的正确数目,对于扩展名为“Txt”、“TXt”等的文件,find命令并不统计它们,原因在于 find 命令默认情况下对字母大小写很敏感,应该加上“忽略大小写”的参数(“/i”)。

另外,如果主文件名包含“txt”(像“txty_01.dat”、“itxt.jpg”等非txt文件),这条命令也可能将这类文件作统计,所以统计结果将有误差。解决办法是将 find 命令双引号内的扩展名加上一点:“.txt”。

  Quote:
@echo off
dir | find ".txt" /I /C | lmod @set x=[] >tmp.bat
call tmp.bat
echo Totally %x% text files
del tmp.bat





----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-8-30 15:29
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 4 楼』:  

就是就是,%date%并不代表执行了date命令,只是因为系统用%date%这个变量指示当前日期,用%time%指示当前时间。



简单就是美
2005-8-30 19:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 5 楼』:  

用willsort的debug大法加上find的命令输出,就可以避免使用第三方工具。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-8-30 22:04
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
tigerpower
中级用户

大师兄


积分 377
发帖 99
注册 2005-8-26
状态 离线
『第 6 楼』:  

在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 ]

2005-8-30 23:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
echo108
初级用户





积分 36
发帖 6
注册 2005-8-26
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by tigerpower at 2005-8-30 23:50:
在xp下好象可以这样玩:
@for /f %i in ('dir ^| find "txt" /C') do echo Totally %i text files

啊,这个方法超巧妙!DOS好像越来越好玩了。

其实我是受了UNIX的影响,在UNIX里面用两个·号夹着的命令结果是可以在echo命令中输出的。

各位大人个出奇招,个个身手不凡。受教了,谢谢!

2005-8-31 10:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
echo108
初级用户





积分 36
发帖 6
注册 2005-8-26
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by JonePeng at 2005-8-30 15:29:
补充一点:

经测试,运行 dir | find "txt" /C 并不能如实地返回文件的正确数目,对于扩展名为“Txt”、“TXt”等的文件,find命令并不统计它们 ...

这个我考虑的不是很周到,嘻嘻,多谢指点。

2005-8-31 10:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lixiaoliang88
新手上路





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

呵,慢慢學,,

2005-8-31 10:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by tigerpower at 2005-8-30 23:50:
在xp下好象可以这样玩:
@for /f %i in ('dir ^| find "txt" /C') do echo Totally %i text files

哈哈,这个用得很妙!我建议再修改成这样才好:
@for /f %i in ('dir ^| find ".txt" /I /C') do echo Totally %i text files



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-8-31 16:26
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复

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


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



论坛跳转: