我基本上是试图在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