需要有一个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工具都这样做,包括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