标题: [文件操作] 如何在指定目录搜索深度内搜索文件? [打印本页]
作者: freesoft00 时间: 2016-2-6 19:18 标题: 如何在指定目录搜索深度内搜索文件?
本帖最后由 pcl_test 于 2016-2-8 06:40 编辑
dir或者for搜索全盘所有根目录和子目录的文件,子目录需要设定搜索深度,比如可以设定只搜索一级子目录,也可以设定搜索一级和二级子目录。
比如全盘搜索的是gho文件。
这个批处理应该如何写?
作者: WHY 时间: 2016-2-7 23:30
- @echo off
- ::搜索深度=2
- for %%i in (D E F) do call :EnumerateFile "%%i:\"
- pause & exit
-
- :EnumerateFile
- for %%i in ("%~1*.GHO") do echo;%%i
- for /d %%i in ("%~1*") do (
- for %%j in ("%%~i\..\..") do (
- if /i "%%~fj" == "%~d1\" call :EnumerateFile "%%~i\"
- )
- )
复制代码
更改第9行 \.. 重复次数来改变搜索深度
作者: WHY 时间: 2016-2-15 23:51
突然发现,CALL 传递形参也是有问题的(WIN7 64bit 中文旗舰版系统)- @echo off
- call :a "a^b"
- pause & exit
-
- :a
- echo "%~1"
复制代码
显示 "a^^b"
CMD真心让人醉了
作者: WHY 时间: 2016-2-15 23:58
PowerShell- function EnumerateFile($p) {
- dir $p -Include *.txt -Force -ErrorAction SilentlyContinue | %{$_.FullName}
- dir $p -Force -ErrorAction SilentlyContinue | `
- ?{$_ -isNot [System.IO.FileInfo] -and $_.FullName -match '^[a-z]:(\\[^\\]+){1,2}$'} | `
- %{ EnumerateFile($_.FullName + '\*') }
- }
-
- foreach($a in 'DEF'.ToCharArray()){ EnumerateFile($a + ':\*') }
复制代码
作者: CrLf 时间: 2016-2-16 03:39
使用 3.0.1 版的 HASH:http://www.bathome.net/s/tool/?down=hash- hash /s:~1 /a:: c:\*.gho d:\*.gho e:\*.gho f:\*.gho
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |