批处理文件从某些子目录复制特定类型的文件一个文件夹
展望的所有文件复制与扩展名为*的.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
不允许限制子文件夹。
从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)
我试图找到文件名与开发中的名称不在内容中。 “findstr/i/M”词汇表“* .txt”在该行中搜索文件的内容,但是当在dir中用作参数时,它只搜索文件名。 – equalizer
您可以随时清除词汇表部分,并使用'* development * .txt'? – itChi
你能输入确切的新命令吗?findstr/i/m * development * .txt不起作用,它需要一个文件名参数。 – equalizer