创建 Windows 脚本来遍历某个文件夹的所有子文件夹,并删除某个文件夹及其所有内容(如果存在)

创建 Windows 脚本来遍历某个文件夹的所有子文件夹,并删除某个文件夹及其所有内容(如果存在)

诀窍如下。假设我想释放一些空间,并在 F:\UnrealProjects 中运行该脚本(该文件夹中有 50-60 多个子文件夹),我希望该脚本遍历其所有子文件夹,检查其中是否包含名为的文件夹Binaries, Build, Intermediate,并删除其中的所有内容Binaries, Build, Intermediate(如果存在),包括文件夹本身。

我并不是懒得手动做一次,但当重新打开一些项目时,它们会部分或完全重建,这会占用空间,因为我真的不需要一直完全构建它们。我只需要将它们存档 :) 并且只构建我想要构建的那些。我真的很想以脚本的形式实现它,而不必(老实说)自己编写一个并学习最好的方法。

我知道公然寻求帮助/请别人为我编写这个脚本并不是很酷,但话又说回来,这只是一次性的事情。

提前感谢大家的帮助,非常感谢。不过,如果有人有更好的想法来重新标记这个问题,我愿意洗耳恭听,并非常乐意接受建议。

编辑:

好的,只是为了把事情说清楚。我想把这个脚本放在 中U:\Projects。我想从 运行它U:\Projects,我希望它遍历当前projects文件夹的所有子文件夹(即所有项目),并删除BuildBinariesIntermediate文件夹(如果它们存在于当前查看的项目中)。我不想把这个脚本放在每个项目中,然后从那里运行它来清除可能存在也可能不存在的三个文件夹。

我希望我现在已经表达得更清楚了。

EDIT2:此脚本的目的仅仅是“清理”项目文件夹中的所有中间文件、构建文件和保存的文件,同时保持其余文件完好无损,以便我可以在以后的某个时候重建它们。

这意味着,-对于U:\Unreal Projects -删除中的每个文件夹currentFolder\BuildcurrentFolder\Intermediate\,currentFolder\Saved ,currentFolder\Binaries`

就是这样 :) 感谢所有人的帮助或贡献 (y)

编辑3:

不知怎么的,我转向了 powershell。以下是我目前得到的结果。 ls -Recurse -Include Build, Binaries, Intermediate, Saved | Remove-Item -Force -Recurse 然而,这有两个问题。

问题 1 - 我真的希望它不删除或包含Plugins\Binaries或以某种方式完全跳过插件文件夹。但这不是最大的问题,因为……

答案1

@echo off

for /F %%i in ('dir /b /a:d') do (
    dir /b /d %%i\build 2>NUL && echo rmdir /q /s %%i
)

如果发现它达到了您想要的效果,请删除 rmdir 之前的 echo ?警告这有点未经测试,所以要小心,也许最好回显到文件并在编辑后从那里运行。

答案2

因此,经过几次不愉快的尝试后,我找到了解决办法。

我创建了一个powershell-clean.bat文件,其中包含以下内容

echo 'this won't touch Binaries subfoldrs, only (Build, Intermediate, Saved).  
powershell.exe -ExecutionPolicy Bypass -Command "ls -Recurse -Include Build, Intermediate, Saved | rmdir -Force -Recurse"   

我不得不保留该Binaries文件夹,因为当我将其放入 powerscript 中时,它也会删除我的文件夹,Project\Plugins\Binaries这是大忌。另一方面,我备份了插件并运行了脚本,突然有 74.9GB 而不是 546MB 的可用空间。

相关内容