Board logo

标题: [文件操作] [已解决]如何搜索并运行当前目录或子目录中的批处理文件? [打印本页]

作者: hzusb    时间: 2011-11-16 11:06     标题: [已解决]如何搜索并运行当前目录或子目录中的批处理文件?

在当前目录或者子目录中有个"123.bat"文件,(文件位置不固定,但是只可能在当前目录或子目录中)。

我想实现的是:搜索到"123.bat"文件并直接运行,若找不到则有提示文字。恳请知道的朋友相助!谢谢!

————————————————————————————
原标题违规,本应警告封贴,但问题既已解决而未警告,属我失职,故代为修改。    by Crlf
作者: yyykkkyyyy    时间: 2011-11-16 11:54

本帖最后由 yyykkkyyyy 于 2011-11-16 12:03 编辑
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/s/a-d "123.bat"')do set "pa=%%~dpi"
  3. if defined pa cd "%pa%"&"123.bat"
  4. pause
复制代码

作者: hzusb    时间: 2011-11-16 12:03

回复 2# yyykkkyyyy


非常感谢你,可以用,谢谢!

如果找不到此文件,如何显示提示文字呢?(比如没找到123.bat)
作者: xslxslxsl    时间: 2011-11-16 12:27

2楼的代码不是可以提示文件没有找到吗
你是不是一定要提示没有找到123.bat啊
作者: hzusb    时间: 2011-11-16 12:47

回复 4# xslxslxsl


没有提示,如果放在一个空目录里运行,只会一闪而过!
作者: yyykkkyyyy    时间: 2011-11-16 12:49

本帖最后由 yyykkkyyyy 于 2011-11-16 13:03 编辑

就是嘛,已经有提示了,也可以满足你
  1. @echo off
  2. set fn=123.bat
  3. for /f "delims=" %%i in ('dir/b/s/a-d "%fn%" 2^>nul')do set "pa=%%~dpi"
  4. if defined pa cd "%pa%"&cmd/b/c "%fn%"&exit
  5. echo 没找到 %fn% ,下一步啥办?
  6. pause
复制代码
补充: 要是一闪而过,估计是找到了一个同名bat文件,但那个bat运行的结果是一闪而过
我是没考虑当前目录下会有几个要找的文件的,如果有会执行后找到的那个
作者: canyuexiaolang    时间: 2011-11-16 13:07

伸手党。这标题闪瞎了我的钛合金狗眼、
不应该回答啊不应该回答...
作者: hzusb    时间: 2011-11-16 13:07

本帖最后由 hzusb 于 2011-11-16 13:10 编辑

厉害,你是高手,问题解决了,再次感谢yyykkkyyyy 朋友热心帮助!!
作者: canyuexiaolang    时间: 2011-11-16 13:13

回复 6# yyykkkyyyy
额...怎么我喜欢用for /r...个人习惯么...............
作者: yyykkkyyyy    时间: 2011-11-16 13:27

回复 9# canyuexiaolang
是啊,要是我自己用,喜欢类似 for /r %%i in (123.*bat)来找一个文件
作者: hzusb    时间: 2011-11-16 15:40

本帖最后由 hzusb 于 2011-11-16 15:44 编辑

不好意思,没看到版规,标题违规了,以后我注意!
作者: Hello123World    时间: 2011-11-17 17:28

  1. @echo off
  2. Set fn=123.bat
  3. For /f %%i in ('dir /s /b /a-d %fn%') do start "" "%%i" && Exit
  4. echo Not found %fn%
  5. pause
复制代码





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