我需要编写一个批处理脚本,用于搜索某个目录中名为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
&
是否是链接命令的正确方法?答案 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" .
此方法不需要延迟变量扩展。