批文件复制文件

需要有一个batch file来检查文件名是否有“abc”,如果有,那么它将启动一个副本。 所以假设文件夹/testing有5个文件

apt.text mar.text may.text Jan.text abc_xyx1234.text 

所以由于“abc”只出现在最后一个文件中的string中,所以只能select最后一个。 我试过了

 @echo off for /f %%a in (' dir /b /ad ^| find /v /i "abc" ') copy "%%a" pause 

但是没有成功。

你没有目的地的副本。

find /v /i会找到那些不符合/v )的abc

这可能更容易使用

 copy *abc* destination 

我认为你的问题的一部分是以下内容:

即使正斜杠有时工作, Windows的标准路径分隔符是反斜杠\ 。 使用正斜杠作为路径分隔符会混淆使用正斜杠作为参数前缀的程序,并且大部分(如果不是全部)Microsoft Windows工具都这样做,包括FINDFINDSTR

另外,如果你正在谈论/folder – 应该是\folder ,如上所述 – 你正在谈论当前驱动器的根目录。 我不确定你的意思。

除此之外,Magoo的建议仍然是有效的,但它省略了“问题”的路径。

那么让我们使用绝对目录来澄清:

我假设你的源代码目录是c:\work\source并且包含你在问题中陈述的文件集。 我假设你的目标目录是c:\stackoverflow\target 。 所以你可以在系统的任何地方执行以下操作:

 copy c:\work\source\*abc* c:\stackoverflow\target 

如果你从驱动器c上的任意文件夹执行此操作,则可以省略驱动器:

 copy \work\source\*abc* \stackoverflow\target 

而且,如果你在源文件夹内,你可以使用Magoo的答案:

 copy *abc* \stackoverflow\target