Windows 批处理文件以复制文件

Windows 批处理文件以复制文件,windows,batch-file,batch-processing,Windows,Batch File,Batch Processing,需要有一个批处理文件,该批处理文件将实际检查文件名中是否有“abc”,如果有,那么它将启动一个副本。 因此,假设文件夹/测试有5个文件 apt.text mar.text may.text Jan.text abc_xyx1234.text 因此,由于“abc”仅在最后一个文件中以字符串形式出现,因此它应该只选择最后一个文件。 我试过了 但是没有成功。您的副本没有目的地 find/v/i将查找那些不匹配的文件名(/v)abc 它可能更容易使用 copy *abc* destinatio

需要有一个批处理文件,该批处理文件将实际检查文件名中是否有“abc”,如果有,那么它将启动一个副本。 因此,假设文件夹/测试有5个文件

apt.text 
mar.text 
may.text 
Jan.text 
abc_xyx1234.text
因此,由于“abc”仅在最后一个文件中以字符串形式出现,因此它应该只选择最后一个文件。 我试过了


但是没有成功。

您的副本没有目的地

find/v/i
将查找那些不匹配的文件名(
/v
abc

它可能更容易使用

copy *abc* destination

我认为你的部分问题在于:

尽管前斜杠有时会起作用,Windows的标准路径分隔符是反斜杠
\
。使用正斜杠作为路径分隔符会混淆使用正斜杠作为参数前缀的程序,大多数(如果不是所有的话)Microsoft Windows工具都会这样做,包括
FIND
FINDSTR

此外,如果您所说的是
/文件夹
——如上所述,它应该是
\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

请告诉我们你试过什么。谢谢。。这是我尝试过的。@echo off for/f%%a in('dir/b/a-d^ | find/v/I“abc')复制“%%a”暂停这意味着什么
它不起作用
?你有蓝屏吗?您对
复制“%%a”
有什么期望。。。应该复制到哪个目标?我的源目标是/source,而我需要复制的目标是/target source有所有名称的文件,但我需要选择该文件并将其复制到文件名中有“abc”的/target。。
copy *abc* \stackoverflow\target