如何编写批处理脚本以根据文件夹名称搜索特定文件?

时间:2015-10-29 22:27:56

标签: windows batch-file

我需要编写一个批处理脚本,用于搜索某个目录中名为SQLite.Interop.dll的文件的出现位置。实际上会有很多这种文件嵌套在不同的子目录下,特别是我希望找到文件夹名称为net45的文件。

我开始尝试通过拼凑不同的StackOverflow答案来自己编写批处理脚本,但最终并没有走得太远。这是我最初的微弱尝试:

@setlocal enableextensions enabledelayedexpansion
@echo off

for /r C:\Specified\Directory %%i in (SQLite.Interop.dll) do (set str = %%i & if x%str:net45=%==x%filestr% (copy %%i ./SQLite.Interop.dll & goto BreakStmt)

:BreakStmt
endlocal

尚未奏效的事情:

  • for /r声明
  • 上的指定目录路径
  • 子字符串在文件路径中搜索net45
  • 不确定&是否是链接命令的正确方法?
  • 一般语法......我有点像用水这样的鱼捞出来的鱼......

1 个答案:

答案 0 :(得分:2)

使用递归dir /s并按\所包围的目录名称过滤输出,并使用for /f解析结果:

for /f "delims=" %%a in ('
    dir /s /b "C:\Specified\Directory\SQLite.Interop.dll" ^| find /i "\net45\"
') do copy /y "%%a" .

此方法不需要延迟变量扩展。