所以我有这个小问题......
(Windows 10 Education N x64)
我是GoldSrc引擎开发者,我正在努力实现这一目标 使用批处理脚本或PowerShell执行以下操作,自动执行此操作 任务本身而不是我手动挑选每个该死的文件夹, 最终是业余时间。 :)
我的目录结构如下:
主(根)文件夹名称" GoldSrc"位于桌面"
所以它是这样的:
绝对路径:
来自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,所以两者一起过滤并从源头复制它们 location [../GoldSrc/prefabs/like_100_folders_here] to" GoldSrc" 子目录名为"地图",图片上显示的所有内容)
所以我想在这个过程之后看起来像这样:
C:\Users\myusername\Desktop\GoldSrc\Maps
:blabla.map bleble.rmf
bleble.rmf cacac.rmf adasdad.map ...
而不是每个文件都在自己的目录中,就像它在源目录中一样......
提前致谢
答案 0 :(得分:0)
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
应该执行此操作。
首先移动到所需的子目录,然后执行目录扫描,包括基本形式的子目录和排除目录名。对于匹配任一文件规范的每个返回行,将找到的名称分配给%%a
,然后将该文件复制到所需的子目录。
然后返回原始目录。
生成的命令只是echo
到控制台。要实际执行命令(检查后),请删除ECHO
关键字。
请注意,这是一个批处理文件,并不打算直接从提示符执行。
答案 1 :(得分:0)
如果您想以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"}