![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 07:55 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何让dir查找文件时忽略指定的某个目录? |
| 可打印版本 1,211 / 7 |
| 第1楼 死性不改 | 发表于 2004-06-13 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
[已结]如何让dir查找文件时忽略指定的某个目录? 如何让dir在目录和子目录中查找文件时忽略指定的某个目录?
[ Last edited by HAT on 2008-11-6 at 18:06 ] |
|
| 第2楼 死性不改 | 发表于 2004-06-13 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
怎么刚发就跑到最低下去了,奇怪!
|
|
| 第3楼 willsort | 发表于 2004-06-14 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re 死性不改:
内部命令DIR并未提供与此有关的参数,可以用以下方法得到类似的结果: DIR /A /B /S | FIND "指定目录" /V 注:代码中的"指定目录"需要替换为你所要忽略的目录,最好指明此目录的完整路径。 另外,一些支持排除文件的命令行程序也可以得到相应的文件列表,比如PKZIP。 |
|
| 第4楼 死性不改 | 发表于 2004-06-14 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
这样做,还是查找了那个指定目录啊,只是列表出来后用find清除掉而已。
还有更好的方法吗?因为那个指定的目录有上千个文件啊! |
|
| 第5楼 死性不改 | 发表于 2004-06-14 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
//这是我写的批处理,用来从系统中还原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% |
|
| 第6楼 死性不改 | 发表于 2004-06-14 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
如今我想实现当其它目录找不到dllcache目录中的某个文件时,
保留这个文件在dllcache目录中,而可以找到的则一律删除。 以免restore时,有部分无法从其它目录复制回dllcache目录。 |
|
| 第7楼 willsort | 发表于 2004-06-20 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re 死性不改:
如果有上千个文件的话,那么不论采用何种算法,代价都是比较大的,所差也只是五十步和一百步的区别。 不过,我可以给你提供一个思路,就是将两次文件遍历互相置换,也就是说,在开始遍历所有子目录(可以排除dllcache中的文件)中的dll文件,并且生成列表。然后在第二次遍历时,只需用 if exist 查知dllcache是否存在此dll文件即可。 此算法将第二次的双重遍历(即在files.txt和C:\的遍历)改为单重遍历,应该会提升一些性能,至于改变算法所涉及到的一些细节,约略难不到死兄吧。 |
|
| 第8楼 wwmmc | 发表于 2008-11-06 14:51 |
| 初级用户 发帖 62 积分 35 | |
|
那个 dir | find "路径 " /v
好象没有用 啊!!! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |