用批处理Linux通配符

我基本上是试图在Windows批处理中执行此行: cp */win/lib/*.dll ./bin 。 Linux非常友好,让我有这些奇特的通配符工作,但Windows不会采取任何。 做这个工作的最好方法是什么? for循环似乎有点矫枉过正,但是copy, xcopy, robocopy似乎都没有实现那种奇特的工作。

感谢提前!

编辑:对于上下文,我正在写mingw32-make的Makefile,我想复制一堆依赖到可执行文件夹。

一个FOR循环可能会感觉过度,但我们在这里讨论批处理,为什么不简单地高兴有一个方法来做你想要的东西… :)我知道没有其他的可能性这样做(除了使用外部工具)。 请注意,在FINDSTR使用正则表达式的目录掩码中的反斜杠需要加倍,这在第4行中完成。否定字符类的脱字符^需要被两次转义,因为它被解释了两次。

编辑:更正在*\win\lib子目录中不包括.dll

 @ECHO OFF SET dirmask=\win\lib SET extension=.dll SET regex=%dirmask:\=\\%\\[^^^^\\]*\%extension%$ FOR /F "tokens=*" %%G IN ('DIR /S /B ^| FINDSTR /R "%regex%"') DO COPY %%G .\bin