[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何用批处理搜索文件夹,并显示出该文件夹路径?

比如说我的I386文件夹是在c:\aaa\bbb\i386下,请问一下如果才能用批处理搜索出这个文件夹,并显示出路径呢?


比如I386是在c:\aaa\bbb下,或者是在d:\ccc下,都可以用这个批处理文件找到I386文件夹,并把路径显示出来。


我目前只会用这种方法来搜索I386文件夹,但是这个方法必须要指定多级目录的位置才行,不太方便。麻烦大家帮忙把这个批处理改成我想要的那种,谢谢!

  1. @echo off
  2. set TargetPath=\aaa\bbb\I386
  3. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  4. if exist "%%a:%TargetPath%" (set NeededPath=%%a:%TargetPath%)
  5. )
  6. echo !NeededPath!
  7. pause
复制代码

[ 本帖最后由 zcy85611 于 2009-11-29 10:54 编辑 ]

  1. @echo off
  2. for %%j in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
  3. if exist %%j:\nul (
  4. for /f "delims=" %%i in ('dir %%j:\i386 /a-d /b /s /a 2^>nul') do echo %%i
  5. )
  6. )
  7. pause
复制代码
是这个意思吗

TOP

这是我用来在网吧里玩WAR3的,看看吧

这种网吧里的路径都不一样 ,所以我写了这个,更广泛一点。
可以针对普通要求的搜索。嘿嘿  直接把例子发上来了,  有必要的话就改改。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  4.     call set a=%%i
  5.     for /f "delims=" %%j in ('dir /a /b /s !a:~-2!\War3.exe') do (
  6.            echo %%j
  7.            copy "%~dp0\冰峰王座\真三国无双3.9d_AI.w3x" "%%~dpj\maps\"
  8.            copy "%~dp0\冰峰王座\DotA Allstars AI CN.w3x" "%%~dpj\maps\"
  9.                      
  10. )
  11. )
  12. echo 完成
  13. pause
复制代码

TOP

原帖由 Seter 于 2009-11-29 10:29 发表
@echo off
for %%j in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
if exist %%j:\nul (
for /f "delims=" %%i in ('dir %%j:\i386 /a-d /b /s /a 2^>nul') do echo %%i
)
)
pause是这个意思 ...


这位朋友,不好意思,是我没有描述清楚,是这样的

我是意思是说无论i386在哪个盘的哪一级目录下,都可以用批处理搜索出I386文件夹,并显示出它的路径
比如I386是在c:\aaa\bbb下,或者是在d:\ccc下,都可以用这个批处理文件找到I386文件夹,并把路径显示出来。

TOP

  1. @echo off
  2. for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  3.      if not defined str for /f "delims=" %%b in ('dir /ad /b /s %%a:\i386') do set "str=%%b"
  4. )
  5. echo %str%&pause>nul
复制代码

[ 本帖最后由 batman 于 2009-11-29 11:04 编辑 ]
***共同提高***

TOP

昏迷,我就是这个意思啊
我这里运行结果是
  1. e:\khm\I386
  2. d:\Program Files\Macromedia\Flash CS4\JVM\lib\i386
复制代码

请先运行一下试试看...不行的话把结果发上来..唉...WIN98的我就无语了

TOP

  1. @echo off
  2. for %%i in (c d e f j h i g k) do (if exist %%i: (
  3. for /f "delims=" %%j in ('dir /b /s /ad %%i:\i386  2^>nul') do echo %%j ))
  4. pause
复制代码
batman 版主的好像是 只要找到一个就结束了

[ 本帖最后由 vsbat 于 2009-12-3 10:07 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

  1. @echo off
  2. for %%i in (c: d: e: f: g:) do (
  3. for /f "delims=" %%a in ('dir /b /s /ad %%i\i386') do echo %%a
  4. )
  5. pause
复制代码

错信息不知掉怎么屏蔽掉??
大众化的心理变态者

TOP

郁闷....干嘛无视我的帖子....55555

请教  这个方法不行么?

TOP

原帖由 Seter 于 2009-11-29 10:29 发表
@echo off
for %%j in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
if exist %%j:\nul (
for /f "delims=" %%i in ('dir %%j:\i386 /a-d /b /s /a 2^>nul') do echo %%i
)
)
pause是这个意思 ...


Seter,你好,你的这个程序我试过了,非常好,但是我有一些代码不太理解,想请教一下你

dir %%j:\i386 /a-d /b /s /a 这一段里面,我试着去掉了/a-d,/s,/a中的任意一个,结果都会导致这个程序找不到我要的文件夹,/s /a我能理解,但是/a-d是什么意思呢?

再就是 dir c:\i386  为什么这样写,就可以找到c盘下所有包含i386文件夹的文件夹呢?

麻烦Seter解答一下,谢谢!

TOP

原帖由 bluewing009 于 2009-11-29 10:48 发表
这种网吧里的路径都不一样 ,所以我写了这个,更广泛一点。
可以针对普通要求的搜索。嘿嘿  直接把例子发上来了,  有必要的话就改改。@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fs ...


这位朋友的代码我试过了,也是可以的,还学到了一个新的用法 fsutil fsinfo drives^|find /v "" ,感谢你的回答

TOP

回复 10楼 的帖子

/a-d的意思是排除文件夹,参考帮助文档:

  /A          Displays files with specified attributes.
  attributes   D  Directories                R  Read-only files
               H  Hidden files               A  Files ready for archiving
               S  System files               I  Not content indexed files
               L  Reparse Points             -  Prefix meaning not
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2009-12-12 00:33 发表
/a-d的意思是排除文件夹,参考帮助文档:

  /A          Displays files with specified attributes.
  attributes   D  Directories                R  Read-only files
               H  Hidden files       ...


Batcher你好,这个文档我看过了,但是我还是不太理解为什么

dir %%j:\i386 /a-d /b /s /a

这样一段代码就能达到我想要的效果

前面有一段/a-d 排除掉目录,后面又有一个/a把所有的类型都包含进去,不是有一点前后矛盾的感觉吗?麻烦大家帮我解答一下,谢谢

TOP

回复 13楼 的帖子

这个代码本来就是错的。
1、/a-d 是排除文件夹,而你的目的是搜索文件夹
2、后面的/a选项覆盖了前面的,即前面不起作用。
总之就是dir %%j:\i386 /a-d /b /s /a这一句很失败!
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  1. @echo off
  2. set TargetFolder=I386
  3. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%a:\ (
  4.     pushd %%a:\
  5.     for /d /r %%i in (.) do if /i "%%~ni"=="%TargetFolder%" echo %%~fi
  6.     popd
  7. )
  8. pause
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表