正在将"development"子文件夹中所有扩展名为*.cpp的文件复制到新目录中。
例如,C:\source有10个名为A1到A10的文件夹。每个A文件夹都有子文件夹,如开发、挂起、发布。我想从所有开发子文件夹中提取所有*.cpp,并将其放在C:\destination中。
示例C:\source\A1\development\文件夹包含文件one.cppC: \source\A1\released\文件夹包含两个.cpp
我只想要路径中包含开发名称的*.cpp文件。因此,在这个例子中,只有一个.cpp应该被复制到新文件夹
我可以通过cmd提示符命名这些文件:dir/s/b*.cpp|findstr/i/m"development">outfile.txt
(注意,上面的dir命令只搜索文件名,而不是文件的内容!)
我想我可以获取outfile.txt并运行另一个批处理文件
将文本文件中列出的文件从文件夹及其子文件夹复制到新位置的批处理脚本
然而,必须有更简单的方法。
BTW:
DOS批处理文件,通过重命名将某些文件类型从子目录复制到一个文件夹
不允许限制到子文件夹。
从这里开始:
但确实需要从批处理文件中运行。
for /f "delims=" %%A in ('findstr /i /M "glossary" *.txt') do copy "%%A" C:destination
编辑:
只需要文件名就不需要findstr,所以我使用了您的初始dir搜索,并将其和for语句结合在一起。适用于我:)
for /f "delims=" %%A in ('dir /s /b *development*.cpp') do copy "%%A" C:destination
第2版:
对,应该就是这样,现在for语句将dir中的文件夹作为变量运行。注意:它确实会产生误报,你可以用if exists语句过滤掉,但我相信你可以自己尝试:
for /f "tokens=*" %%D in ('dir /b /s /a:d "C:source*"') do copy %%Ddevelopment*.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 "%%Ddevelopment*.cpp"') do copy "%%A" C:destination)