Board logo

标题: [文件操作] [已解决]批处理怎么全盘搜索文件夹? [打印本页]

作者: dominater    时间: 2009-12-15 12:54     标题: [已解决]批处理怎么全盘搜索文件夹?

在论坛上搜了一些帖子,但里面的方法好像没用。比如F盘中有文件夹叫111
for /f+dir:
  1. cd /d f:\
  2. for /f "tokens=*" %%i in ('dir /ad/b/s 111') do echo %%i
复制代码
如果111在根目录结果显示的是111中所有文件,不在根目录压根就没结果。所以改进为:
  1. for /f "tokens=*" %%i in ('dir /ad/b/s^|findstr "111"') do echo %%i
复制代码
这次倒是文件夹,但所有名字中含有111的文件夹都被列了出来。
无奈,换for /r吧:
  1. for /r %%i in (111) do echo %%i
复制代码
好吧,我承认这下我真没招了,它和
  1. for /r %%i in (.) do echo %%i
复制代码
根本就没区别。
求解答,到底怎么才能把文件夹给揪出来?
作者: dominater    时间: 2009-12-15 18:39

为什么还是没人回复。。。
作者: x576380361    时间: 2009-12-15 19:00

  1. for /r %%i in (111) do if exist %%i echo %%i
复制代码
试试它!
作者: vsbat    时间: 2009-12-15 19:30

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if exist "C:\111" (echo C:\111
  4. for /f "delims=" %%a in ('dir /ad /b /s C:\111') do (
  5. set t=%%a&call,set t=%%t:~-3%%
  6. if "!t!"=="111" echo %%a)
  7. ren C:\111 ##111##)
  8. for /f "delims=" %%a in ('dir /ad /b /s C:\111^|findstr /v "##"') do echo %%a
  9. ren C:\##111## 111 2>nul
  10. pause
复制代码
好累呀---
唉--------注意当 C: 根目录有 目标文件夹时 因为 dir /ad /b /s C:\111 意思是
列出 c:\111 下的文件夹 所以无法搜索正确
当根目录无目标文件夹时 下面这句
for /f "delims=" %%a in ('dir /ad /b /s C:\111') do (echo %%a)  就可正确在c盘搜索文件夹

[ 本帖最后由 vsbat 于 2009-12-15 19:33 编辑 ]
作者: dominater    时间: 2009-12-16 17:30

3楼,你的方法太好了。一针见血
作者: zqz0012005    时间: 2009-12-16 22:22     标题: 回复 1楼 的帖子

不要把findstr只当find用,那太浪费了
dir /ad/s/b F:\ | findstr /ie "\\111"
作者: wsjxwj    时间: 2010-1-9 10:52

原帖由 x576380361 于 2009-12-15 19:00 发表
for /r %%i in (111) do if exist %%i echo %%i试试它!




再次学习了!
for /r的很强很牛




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2