You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Windows递归命令追踪空文件夹并创建.keep文件以提交至Git

嗨,这个需求很常见——Git本身不追踪空文件夹,所以用.keep文件来占位是标准操作。在Windows上,用CMD或者PowerShell都能递归完成这个任务,给你两种实用方案:

方案1:使用CMD命令

如果你习惯用传统的命令提示符,执行这条命令就行:

for /r /d %d in (*) do @if not exist "%d\*.*" echo. > "%d\.keep"

参数说明:

  • /r:递归遍历当前目录及所有子目录
  • /d:只针对文件夹进行遍历
  • %d:代表当前遍历到的文件夹路径
  • @if not exist "%d\*.*":判断该文件夹下是否没有任何文件(包括隐藏文件)
  • echo. > "%d\.keep":在空文件夹里创建一个空的.keep文件

注意:如果是把这条命令写到批处理(.bat)文件里,需要把%d改成%%d,否则会报错:

for /r /d %%d in (*) do @if not exist "%%d\*.*" echo. > "%%d\.keep"
方案2:使用PowerShell命令

PowerShell的语法更直观,功能也更灵活,这条命令同样能实现需求:

Get-ChildItem -Recurse -Directory | Where-Object { $_.GetFiles().Count -eq 0 } | ForEach-Object { New-Item -Path "$($_.FullName)\.keep" -ItemType File -Force }

分步解释:

  • Get-ChildItem -Recurse -Directory:递归获取当前目录下的所有文件夹
  • Where-Object { $_.GetFiles().Count -eq 0 }:筛选出没有任何文件的空文件夹
  • ForEach-Object { New-Item ... }:给每个空文件夹创建.keep文件,-Force参数确保即使已经存在该文件也不会抛出错误

额外提示

  • 两种命令默认都是在当前目录下执行,如果你想指定目标路径,比如D:\my-git-project:
    • CMD命令可以改成:for /r "D:\my-git-project" /d %d in (*) do @if not exist "%d\*.*" echo. > "%d\.keep"
    • PowerShell命令改成:Get-ChildItem -Path "D:\my-git-project" -Recurse -Directory | ...
  • 后续如果文件夹里添加了内容,.keep文件可以保留也可以删除,不影响Git对文件夹的追踪(只要文件夹里有其他文件,Git就会识别它)

内容的提问来源于stack exchange,提问作者Oz Giat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:42:00