用于复制文件的批处理文件

时间:2015-04-22 14:31:50

标签: windows batch-file batch-processing

需要一个批处理文件来实际检查文件名是否有" abc"在其名称中,如果它在那里,那么它将启动一个副本。 所以假设文件夹/测试有5个文件

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

所以,因为" abc"仅在最后一个文件中出现在字符串中,它应该只选择最后一个。 我试过了

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

但它没有成功。

2 个答案:

答案 0 :(得分:3)

您的副本没有目的地。

find /v /i会找到那些/v)匹配abc

的文件名

使用起来可能更容易

copy *abc* destination

答案 1 :(得分:0)

我认为您的部分问题如下:

即使正斜线工作有时 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