Batch file Batch file可将某些文件类型从某些子目录复制到一个文件夹

Batch file Batch file可将某些文件类型从某些子目录复制到一个文件夹,batch-file,copy,Batch File,Copy,希望将开发子文件夹中扩展名为*.cpp的所有文件复制到新目录 例如,C:\source有10个名为A1到A10的文件夹。每个文件夹都有子文件夹,例如开发、挂起、发布。我想从所有开发子文件夹中提取所有*.cpp,并将其放在C:\destination中 示例C:\source\A1\development\folder包含文件one.cpp C:\source\A1\released\文件夹包含两个.cpp 我只需要路径中包含开发名称的文件*.cpp。 因此,在本例中,只应将一个.cpp复制到ne

希望将开发子文件夹中扩展名为*.cpp的所有文件复制到新目录

例如,C:\source有10个名为A1到A10的文件夹。每个文件夹都有子文件夹,例如开发、挂起、发布。我想从所有开发子文件夹中提取所有*.cpp,并将其放在C:\destination中

示例C:\source\A1\development\folder包含文件one.cpp C:\source\A1\released\文件夹包含两个.cpp

我只需要路径中包含开发名称的文件*.cpp。 因此,在本例中,只应将一个.cpp复制到newfolder

我可以通过cmd提示符命名这些文件: dir/s/b*.cpp | findstr/i/m development>outfile.txt

注意上面的dir命令只搜索文件名,而不是文件的内容

我想我可以使用outfile.txt并运行另一个批处理文件

然而,必须有更简单的方法

顺便说一句:

不允许限制到子文件夹。

来自:

但确实需要从批处理文件运行

for /f "delims=" %%A in ('findstr /i /M "glossary" *.txt') do copy "%%A" C:\destination
编辑:

对于文件名不需要findstr,所以我使用了您的初始dir搜索,并将其与for语句相结合。为我工作:

对于/f delims=%%A在“dir/s/b*development*.cpp”中,请复制%%A C:\destination

编辑2:

对,应该是这样,现在for语句以dir中的文件夹作为变量运行。注意:它确实会产生误报,您可以使用if-exists语句过滤掉这些误报,但我相信您可以自己进行实验:

for /f "tokens=*" %%D in ('dir /b /s /a:d "C:\source\*"') do copy %%D\development\*.cpp C:\destination
编辑3:

如果您想在神秘目录中找到几个.cpp:

for /f "tokens=*" %%D in ('dir /b /s /a:d "C:\source\*"') do (for /f "delims=" %%A in ('dir /s /b "%%D\development\*.cpp"') do copy "%%A" C:\destination)

我试图在名称中找到文件名,而不是在内容中。“findstr/i/M glossary*.txt”搜索此行中文件的内容,但在dir中用作参数时,它只搜索文件名。您可以始终清除词汇表部分,并使用*development*.txt?您能键入准确的新命令吗?findstr/i/m development.txt不起作用,它需要一个filename.dir/s/b development.cpp的参数来返回未找到的文件。dir/s/b development列出了包含开发的文件夹名称的完整路径。您是否已将批处理文件复制到要从中搜索的目录中,并输入了*development*。cpp我使用txt文件对此进行了测试,结果正常