2017-10-17 76 views
0

展望的所有文件复制与扩展名为*的.cpp在“发展”的子文件夹到新目录中。批处理文件从某些子目录复制特定类型的文件一个文件夹

例如,C:\源10页已命名的文件夹A1至A10。每个A文件夹都有子文件夹,如开发,待处理,已发布。我想从所有开发子文件夹中提取所有* .cpp,并放置在C:\目标中。

例如C:\源\ A1 \研发\文件夹中包含文件one.cpp C:\发布的源代码\ A1 \ \文件夹中包含two.cpp

我只想* .cpp的文件是在路径包含开发名称。 因此在这个例子中只有one.cpp应该被复制到新文件夹中

我可以从cmd提示符命名这些文件: dir/s/b * .cpp | FINDSTR/I/M“开发”> outfile.txt

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

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

Batch script to copy files listed in text file from a folder and its subfolders to a new location

但是,必须有更简单的方法。

BTW:

DOS Batch file to copy certain file types from subdirectories to one folder with rename

不允许限制子文件夹。

回答

1

here

但是否需要从一个批处理文件运行。

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

编辑:

无需FINDSTR只是文件名,所以我用你的初始目录搜索,并与for语句结合它。为我工作:)

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

EDIT2:

对,所以这应该是它,现在for语句与DIR作为一个变量里面的文件夹中运行。注意:它不产生误报,你可以与如果存在语句过滤掉,但我敢肯定,你可以用自己的实验:

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

EDIT3:

如果你想找到几个.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) 
+0

我试图找到文件名与开发中的名称不在内容中。 “findstr/i/M”词汇表“* .txt”在该行中搜索文件的内容,但是当在dir中用作参数时,它只搜索文件名。 – equalizer

+0

您可以随时清除词汇表部分,并使用'* development * .txt'? – itChi

+0

你能输入确切的新命令吗?findstr/i/m * development * .txt不起作用,它需要一个文件名参数。 – equalizer

相关问题