希望在"开发"中复制扩展名为* .cpp的所有文件。子文件夹到新目录。
例如,C:\ source有10个名为A1到A10的文件夹。每个A文件夹都有子文件夹,如开发,待处理,已发布。我想从所有开发子文件夹中提取所有* .cpp并放在C:\ destination。
示例C:\ source \ A1 \ development \ folder包含文件one.cpp C:\ source \ A1 \ released \文件夹包含two.cpp
我只想要包含开发名称的路径中的文件* .cpp。 因此,在此示例中,只应将one.cpp复制到newfolder
我可以从cmd提示符中命名这些文件: dir / s / b * .cpp | findstr / i / m" development" > 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
不允许限制子文件夹。
答案 0 :(得分:1)
来自here:
但确实需要从批处理文件中运行。
for /f "delims=" %%A in ('findstr /i /M "glossary" *.txt') do copy "%%A" C:\destination
编辑:
不需要findtr只是文件名,所以我使用了你的初始目录搜索,并将它与for语句结合起来。适合我:)
for /f "delims=" %%A in ('dir /s /b *development*.cpp') do copy "%%A" C:\destination
EDIT2:
是的,所以这应该是它,现在for语句以dir中的文件夹作为变量运行。注意:它确实会产生误报,您可以使用if exists语句过滤掉,但我相信您可以自己试验一下:
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)