复制具有特定扩展名的多个文件

Copying Multiple files with specific extension

所以我有这个小问题...

(Windows 10 教育 N x64)

我是一名 GoldSrc 引擎开发人员,我正在努力实现 使用批处理脚本或 PowerShell 执行以下操作,以自动执行 任务本身而不是我手动选择每个该死的文件夹, 最终是为了打发时间。 :)

我的目录结构如下:

主(根)文件夹名称 "GoldSrc" 位于 "Desktop"

所以它是这样的:

绝对路径:

图片来自 TREE VIEW:

[Main folder]
C:\Users\Andrej Poženel\Desktop\GoldSrc

[Source directory to copy from with recursive subdirectories]
C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs

[Directory to copy to]
C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps

我想查找名为 "prefabs" 的子文件夹并搜索所有 该目录中文件扩展名为 .map 的文件的子文件夹 AND .rmf,所以两个过滤器在一起并从源中复制它们 位置 [../GoldSrc/prefabs/like_100_folders_here] 到 "GoldSrc" 名为 "Maps" 的子目录,图片上显示的所有内容)

所以我希望在这个过程之后看起来像这样:

C:\Users\myusername\Desktop\GoldSrc\Maps: blabla.map bleble.rmf bleble.rmf cacac.rmf adasdad.map ...

并不是每个文件都在自己的目录中,就像在源目录中一样...

提前致谢

pushd "C:\Users\myusername\Desktop\GoldSrc"
for /f "delims=" %%a in ('dir /s /b /a-d .\prefabs\*.map .\prefabs\*.rmf')  do ECHO copy "%%a" ".\maps\"
popd

应该执行这个。

首先移动到所需的子目录,然后执行目录扫描,包括基本形式的子目录,不包括目录名。对于匹配任一文件规范的每个 returned 行,将找到的名称分配给 %%a,然后将该文件复制到所需的子目录。

然后return到原目录

生成的命令将简单地echo发送到控制台。要实际执行命令(检查后),请删除 ECHO 关键字。

请注意,这是一个批处理文件,并不打算直接从提示中执行。

如果你想用Powershell的方式来做,你可以使用下面的代码

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -filter *.map | %{
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"}

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -filter *.rmf | %{
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"}

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -recurse | ?{
!$_.PsIsContainer -and $_.Extension -match "map|rmf" } | %{
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"}