批处理文件,将某些文件类型从某些子目录复制到一个文件夹



正在将"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)

相关内容

最新更新