中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于判断文件名的批处理!急!!!在线等!!!
« [1] [2] »
作者:
标题: 关于判断文件名的批处理!急!!!在线等!!! 上一主题 | 下一主题
crysis
初级用户





积分 20
发帖 20
注册 2009-4-10
状态 离线
『第 16 楼』:  

非常感谢!

2009-4-11 08:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 17 楼』:  

受15楼启发,把代码精简了下

@echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do set/p a=%%a<nul|more

2009-4-11 12:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 18 楼』:  原来还可以这样用

换一种方法也可以。
可是不明白是什么意思
@echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do cd.|echo.%%a

@echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do echo.%%a>>aa.txt|rem
type aa.txt
[ Last edited by netbenton on 2009-4-11 at 11:23 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-11 13:15
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 19 楼』:  

这样试试看
echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do pause>nul|echo.%%a
pause

pause>nul|echo.是否显示


2009-4-11 20:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 20 楼』:  

还有
pause>nul&echo.是否显示


2009-4-11 20:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 21 楼』:  

测试了一下,17楼以后的方法虽然代码精简了,可是太耗时了,用时27到60毫秒,
而15楼的用时才1毫秒



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-11 20:56
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 22 楼』:  

最快的还是兄的18楼的第一段代码^-^

2009-4-11 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 23 楼』:  

不明白
pause>nul|echo 为什么会显示出来


2009-4-11 21:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 24 楼』:  

pause>nul|echo 为什么会显示出来>con|echo 这里也显示出来>con|echo 这里是三行

还有上面的代码在命令行窗口重复运行,显示结果不一样
这是怎么回事

2009-4-11 21:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 25 楼』:  


pause>nul|echo 为什么会显示出来>con|echo 这里也显示出来>con|echo 这里是三行
还有上面的代码在命令行窗口重复运行,显示结果不一样
这是怎么回事

2009-4-11 21:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 26 楼』:  

===================
为什么会显示出来
这里也显示出来
这里是三行
==================
为什么会显示出来
这里是三行
这里也显示出来
=================



出现上面两种显示结果

2009-4-11 21:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 27 楼』:  

经多示试验还有显示
========================
这里也显示出来
这里是三行
为什么会显示出来
=====================
汗,会不会出现6种结果~~~~

2009-4-11 21:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 28 楼』:  

经试验,最快的是15楼的代码1毫秒,然后是17楼27毫秒,最后是18楼40~50毫秒
不明白的是:为什么用内部命令时反而比more外部命令慢?

我的猜想:
为什么17楼后的代码会起到变量延迟的作用?
是因为在进行管道操作时,已“跑”出批处理程序的外面,也就是把控制权交给了其它外部程序。
而使用外部命令more时,直接交给了more.exe,但是使用内部命令时,应该是交给了另外一个命令解释器,也就是另外调用一次cmd.exe, 然后执行它的一个内部命令。
因为运行一次cmd.exe的速度比运行一次more.exe的速度要慢,所以用more时的速度更快一点。

上面只是我的一个猜想。



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-12 00:39
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 29 楼』:  

应该是管道命令的作用,管道命令后的more换成能接受流的findstr也可以
@echo off
set 123=%systemroot%
setlocal enabledelayedexpansion
for /f "delims=" %%a in (b.txt) do echo.%%a|findstr .
pause


2009-4-12 01:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 30 楼』:  

上面的setlocal enabledelayedexpansion 可以去掉
@echo off
set 123=%systemroot%
for /f "delims=" %%a in (b.txt) do echo.%%a|findstr .
pause


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


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



论坛跳转: