dos下遍历目录和文件的代码(主要利用for命令)
作者 佚名
来源 批处理
浏览
发布时间 2013-07-09
Visit.bat - 文件遍历批处理程序 复制代码 代码如下: :: Visit.bat - 文件遍历批处理程序 :: Will Sort - 10/17/2004 - V2 :: :: 程序用途: :: 对指定文件集/目录集/文件列表执行指定操作 :: :: 命令行说明: :: 1. VISIT 文件集/目录集 [参数] :: 对文件集/目录集执行指定操作 :: 2. VISIT @ 文件列表 :: 对指定文件列表中的文件执行指定操作 :: :: 注意事项: :: - 文件集/目录集 中可包含有效路径和通配符 :: - 路径缺省为当前路径,文件集缺省为 *.* (并非所有文件) :: - 文件集/目录集 含空格时需用双引号引起 :: - [参数] 支持的DIR开关: /S /A /O /L等不与 /B 冲突者 :: - [参数] 不支持的DIR开关: /W /P /V 等与 /B 冲突者 :: - [操作] 由调用者预先写入 visitcmd.bat 中 :: - [操作] 中使用 %VisitFile% 引用遍历文件 :: - 程序检查检查 [文件列表] 是否存在,但不检查它是否有效 :: - 不遍历隐藏/系统目录下的目录和文件(在命令行中指定时例外) :: :: 用法示例: :: visit c:\ /ad /s 遍历C盘所有目录,包含子目录 :: visit "C:\My document" /a-d 遍历"C:\My document"下所有文件 :: visit C:\*.zip /a /s 遍历C盘所有.zip压缩包,包含子目录 :: 如想遍历多个文件/目录集,可多次使用"DIR 文件集 /a /s>>文件列表" :: 生成一个完整的文件列表,再使用文件列表进行遍历;或者使用VisitCE.Bat :: 在遍历未显式指定的隐藏/系统目录时,可以用"attrib 文件集 /s"生成 :: 文件列表,然后在visitcmd.bat的代码中引用%VisitFile%第三至最后的串, :: 再使用文件列表进行遍历 :: :: 测试报告: :: 在 Win98 命令行方式下有限黑箱测试通过 :: 性能仍然是最大的瓶颈 :: @echo off if "%1"=="@" goto CopyList :MakeList dir /b %1 %2 %3 %4 %5 %6 > ~ find "~" /v < ~ > ~ if not errorlevel 1 copy ~ ~>nul goto MakePreLine :CopyList if not [%2]==[] if exist %2 copy %2 ~>nul if not exist ~ goto End :MakePreLine echo set VisitFile=> ~ for %%c in (rcx e w q) do echo %%c>> ~ debug ~ < ~ > nul if [%OS%]==[Windows_NT] chcp 936 > nul :LoopVisit copy ~+~ ~ > nul find "set VisitFile=" < ~ > ~visit.bat call ~visit.bat if "%VisitFile%"=="" goto Clear if not exist visitcmd.bat echo Visiting %VisitFile% if exist visitcmd.bat call visitcmd.bat find "set VisitFile=" /v < ~ > ~ goto LoopVisit :Clear del ~visit.* set VisitFile= :End VisitCE.bat - 文件遍历批处理程序命令行增强版 复制代码 代码如下: :: VisitCE.bat - 文件遍历批处理程序命令行增强版 :: Will Sort - 10/17/2004 - V2CE :: :: 程序用途: :: 对指定路径/文件列表下的指定文件/目录集执行指定操作 :: :: 命令行说明: :: 1. VISIT [路径1 路径2...] [开关1 开关2...] [文件集1 文件集2...] :: 对 [路径] 和 [开关] 限定下的 [文件集] 执行指定操作 :: 2. VISIT @ 文件列表1 [文件列表2...] :: 对指定 [文件列表] 中的文件执行指定操作 :: :: 注意事项: :: - [路径] [参数] [文件集] 均可不选或多选 :: - [路径] 中不可包含通配符,[文件集] 中可包含有效路径和通配符 :: - [路径] 缺省为当前路径,[文件集] 缺省为 *.* (并非所有文件) :: - [路径] [文件集] 含空格时需用双引号引起 :: - [参数] 支持的DIR开关: /S /A /O /L等不与 /B 冲突者 :: - [参数] 不支持的DIR开关: /W /P /V 等与 /B 冲突者 :: - [操作] 由调用者预先写入 visitcmd.bat 中 :: - [操作] 中使用 %VisitFile% 引用遍历文件 :: - 程序检查检查 [文件列表] 是否存在,但不检查它是否有效 :: - 不遍历隐藏/系统目录下的目录和文件(在命令行中指定时例外) :: :: 用法示例: :: visit c:\ /ad /s 遍历C盘所有目录,包含所有子目录 :: visit "C:\My document" /a-d 遍历"C:\My document"下所有文件 :: visit c:\ d:\ e:\ /s /a /on 遍历C,D,E中所有文件,并按文件名排序 :: visit \ /a 遍历当前盘根目下所有文件和目录 :: 在遍历未显式指定的隐藏/系统目录时,可以用"attrib 文件集 /s"生成 :: 文件列表,然后在visitcmd.bat的代码中引用%VisitFile%第三至最后的串, :: 再使用文件列表进行遍历 :: :: 测试报告: :: 在 Win98 命令行方式下有限黑箱测试通过 :: 性能仍然是最大的瓶颈 :: @echo off if "%1"=="$" goto MakeList if "%1"=="@" goto CopyList if "%1"=="" goto End set VisitCommand=%0 :GetArgu :GetPath if not exist %1.\nul goto GetSwitch set VisitPath=%VisitPath% %1 goto GetNext :GetSwitch echo %1 | find "/" > nul if errorlevel 1 goto GetFilter set VisitSwitch=%VisitSwitch% %1 goto GetNext :GetFilter echo %1 | find "*" > nul if not errorlevel 1 goto SetFilter echo %1 | find "?" > nul if errorlevel 1 goto End :SetFilter set VisitFilter=%VisitFilter% %1 :GetNext shift if not [%1]==[] goto GetArgu %VisitCommand% $ %VisitFilter% :MakeList if not [%VisitPath%]==[] goto ForMake :DirMake dir %2 /b %VisitSwitch% >> ~ goto MakeNext :ForMake for %%p in (%VisitPath%) do dir %%p.\%2 /b %VisitSwitch% >> ~ :MakeNext shift if not [%2]==[] goto MakeList find "~" /v < ~ > ~ if not errorlevel 1 copy ~ ~>nul goto MakePreLine :CopyList if not [%2]==[] if exist %2 type %2>>~ shift if not [%2]==[] goto CopyList :MakePreLine if not exist ~ goto End echo set VisitFile=> ~ for %%c in (rcx e w q) do echo %%c>> ~ debug ~ < ~ > nul if [%OS%]==[Windows_NT] chcp 936 > nul :LoopVisit copy ~+~ ~ > nul find "set VisitFile=" < ~ > ~visit.bat call ~visit.bat if "%VisitFile%"=="" goto Clear if not exist visitcmd.bat echo Visiting %VisitPath% %VisitSwitch% %VisitFilter% - %VisitFile% if exist visitcmd.bat call visitcmd.bat find "set VisitFile=" /v < ~ > ~ goto LoopVisit :Clear for %%f in (~visit.*) do del %%f for %%e in (Command Path Switch Filter File) do set Visit%%e= :End |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 通过批处理调用SQL的方法(osql)下一篇: 在CMD下读取服务器终端的端口的代码
关于dos下遍历目录和文件的代码(主要利用for命令)的所有评论