复制具有特定扩展名的多个文件
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"}
所以我有这个小问题...
(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"}