中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何让dir查找文件时忽略指定的某个目录?
作者:
标题: [已结]如何让dir查找文件时忽略指定的某个目录? 上一主题 | 下一主题
死性不改
中级用户




积分 378
发帖 88
注册 2004-5-5
状态 离线
『楼 主』:  [已结]如何让dir查找文件时忽略指定的某个目录?

如何让dir在目录和子目录中查找文件时忽略指定的某个目录?


[此贴子已经被作者于2004-6-14 下午 02:30:39编辑过]



[ Last edited by HAT on 2008-11-6 at 18:06 ]



www.51ct.net
2004-6-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
死性不改
中级用户




积分 378
发帖 88
注册 2004-5-5
状态 离线
『第 2 楼』:  

怎么刚发就跑到最低下去了,奇怪!



www.51ct.net
2004-6-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

Re 死性不改:

  内部命令DIR并未提供与此有关的参数,可以用以下方法得到类似的结果:

  DIR /A /B /S | FIND "指定目录" /V

  注:代码中的"指定目录"需要替换为你所要忽略的目录,最好指明此目录的完整路径。

  另外,一些支持排除文件的命令行程序也可以得到相应的文件列表,比如PKZIP。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-6-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
死性不改
中级用户




积分 378
发帖 88
注册 2004-5-5
状态 离线
『第 4 楼』:  

这样做,还是查找了那个指定目录啊,只是列表出来后用find清除掉而已。

还有更好的方法吗?因为那个指定的目录有上千个文件啊!



www.51ct.net
2004-6-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
死性不改
中级用户




积分 378
发帖 88
注册 2004-5-5
状态 离线
『第 5 楼』:  

//这是我写的批处理,用来从系统中还原dllcache目录的。
@echo off
if exist %systemroot%\fdir.txt goto restore
dir %systemroot%\system32\dllcache /a /b >files.txt
sfc /cachesize=0
sfc /purgecache
cls
echo.
echo.
echo 请等待CMD窗口自动退出,时间可能比较长。
for /f "usebackq" %%I in (files.txt) do echo dir c:\%%I /a /b /s ^>^>%systemroot%\fdir.txt >>fdir.cmd
call fdir.cmd
del fdir.cmd
del files.txt
exit

:restore
set fdir=%systemroot%\fdir.txt
echo.
echo.
echo                                正在复制文件
echo                            请等待CMD窗口自动退出。
echo.
echo.
for /f "usebackq" %%J in (%fdir%) do if exist %%J attrib -s -h %%J && copy %%J %systemroot%\system32\dllcache\ >nul
del %fdir%



www.51ct.net
2004-6-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
死性不改
中级用户




积分 378
发帖 88
注册 2004-5-5
状态 离线
『第 6 楼』:  

如今我想实现当其它目录找不到dllcache目录中的某个文件时,

保留这个文件在dllcache目录中,而可以找到的则一律删除。

以免restore时,有部分无法从其它目录复制回dllcache目录。




[此贴子已经被作者于2004-6-14 下午 10:48:06编辑过]






www.51ct.net
2004-6-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re 死性不改:

  如果有上千个文件的话,那么不论采用何种算法,代价都是比较大的,所差也只是五十步和一百步的区别。

  不过,我可以给你提供一个思路,就是将两次文件遍历互相置换,也就是说,在开始遍历所有子目录(可以排除dllcache中的文件)中的dll文件,并且生成列表。然后在第二次遍历时,只需用 if exist 查知dllcache是否存在此dll文件即可。

  此算法将第二次的双重遍历(即在files.txt和C:\的遍历)改为单重遍历,应该会提升一些性能,至于改变算法所涉及到的一些细节,约略难不到死兄吧。




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-6-20 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wwmmc
初级用户





积分 35
发帖 62
注册 2008-10-12
状态 离线
『第 8 楼』:  

那个 dir | find "路径 " /v
好象没有用 啊!!!

2008-11-6 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: