需要一个批处理文件来实际检查文件名是否有" 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
但它没有成功。
答案 0 :(得分:3)
您的副本没有目的地。
find /v /i
会找到那些不(/v
)匹配abc
使用起来可能更容易
copy *abc* destination
答案 1 :(得分:0)
我认为您的部分问题如下:
即使正斜线工作有时, Windows'规范路径分隔符是反斜杠\
。使用正斜杠作为路径分隔符会混淆使用正斜杠作为参数前缀的程序,并且大多数(如果不是全部)Microsoft Windows工具都会这样做,包括FIND
和FINDSTR
。
此外,如果您正在谈论/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