批处理(bat)实现全盘搜索指定文件获取其完整路径方法大全
废话不多说,直接上代码,额,想用的话,自己保存成bat文件即可。
【方案一】for/f+dir
@echooff rem指定待搜索的文件 set"FileName=BatHome_Batcher.txt" echo正在搜索,请稍候... for%%ain(CDEFGHIJKLMNOPQRSTUVWXYZ)do( ifexist%%a:\( for/f"delims="%%bin('dir/a-d/s/b"%%a:\*%FileName%"2^>nul')do( if/i"%%~nxb"equ"%FileName%"( echo,%%b ) ) ) )
【方案二】for/r(比for/f+dir效率高,但不会遍历隐藏文件)
@echooff rem指定待搜索的文件 set"FileName=BatHome_Batcher.txt" echo正在搜索,请稍候... for%%ain(CDEFGHIJKLMNOPQRSTUVWXYZ)do( ifexist%%a:\( pushd%%a:\ for/r%%bin(*%FileName%)do( if/i"%%~nxb"equ"%FileName%"( echo,%%b ) ) popd ) )
【方案三】WMIC(Win2000/WinXPHOME版、WinXP精简版可能不支持)
@echooff rem指定待搜索的文件 set"FileName=BatHome_Batcher.txt" echo正在搜索,请稍候... for%%ain("%FileName%")do( set"nName=%%~na" set"xName=%%~xa" ) set"xName=%xName:~1%" for/f"skip=1delims="%%ain('wmicdatafilewhere"filename='%nName%'andExtension='%xName%'"getname')do( echo,%%a )
【方案四】使用Windows7系统自带的where命令
@echooff rem指定待搜索的文件 set"FileName=BatHome_Batcher.txt" echo正在搜索,请稍候... for%%ain(CDEFGHIJKLMNOPQRSTUVWXYZ)do( ifexist%%a:\( for/f"delims="%%bin('where/r%%a:"%FileName%"2^>nul')do( if/i"%%~nxb"equ"%FileName%"( echo,%%b ) ) ) )