需先在文件资源管理器中勾选“文件扩展名”以显示真实后缀,再用PowerShell执行精准重命名:分别对.cc、.C、.cxx等非标准C++扩展名文件执行Get-ChildItem过滤并Replace后缀为.cpp,或用Where-Object筛选Extension属性统一处理,推荐配合-WhatIf预览确保安全。

你在整理一个大型开源项目时,发现几千个源码文件扩展名不统一——有的是 .cpp,有的是 .cc,有的甚至写成了 .C,需要在 PowerShell 中一次性把它们全部改成标准的 .cpp,且不能误改其他类型文件或破坏原有文件名结构。
先让系统显示完整扩展名
这一步必须做,否则后续所有重命名操作都会只改文件名主体,漏掉真正的扩展名部分。打开任意文件夹 → 顶部菜单点“查看” → 在“显示/隐藏”区勾选【文件扩展名】。此时所有 .cc、.C 文件才会真实露出后缀,而不是被系统伪装成无后缀图标。
用 PowerShell 管道精准替换指定后缀
此方法只匹配目标后缀,不碰文件名主体,不依赖正则,零出错风险,适合批量修正源码文件格式。
第一步:进入目标文件夹,在空白处按住 Shift + 右键 → 选择“在此处打开 PowerShell 窗口”。
第二步:执行命令:Get-ChildItem -Filter *.cc | Rename-Item -NewName { $_.Name -replace '\.cc$', '.cpp' }。注意单引号内是固定字符串替换,【$ 符号不可省略,否则会把文件名中间的 cc 也替掉】。
第三步:重复执行两次,分别处理 .C 和 .cxx:Get-ChildItem -Filter *.C | Rename-Item -NewName { $_.Name -replace '\.C$', '.cpp' };Get-ChildItem -Filter *.cxx | Rename-Item -NewName { $_.Name -replace '\.cxx$', '.cpp' }。
用一条命令通吃所有变体(推荐)
如果你确认当前目录下只有这几种非标准 C++ 后缀,且不想分三次敲,可用管道组合过滤:
Get-ChildItem | Where-Object { $_.Extension -in '.cc', '.C', '.cxx', '.cp' } | ForEach-Object { Rename-Item $_ -NewName ($_.BaseName + '.cpp') }
这行命令会逐个检查每个文件的 Extension 属性,只对明确列出的四种后缀执行重命名。它比正则更安全,因为不会误伤 .acc、.ccs 这类名字含 cc 但不是后缀的文件。
防误操作:先预览再执行
方法一:把重命名命令中的 Rename-Item 换成 Write-Host,例如:Get-ChildItem -Filter *.cc | ForEach-Object { Write-Host "将改为:" $_.BaseName".cpp" },运行后只看输出,不真改。
方法二:用 -WhatIf 参数试跑,如:Get-ChildItem -Filter *.cc | Rename-Item -NewName { $_.Name -replace '\.cc$', '.cpp' } -WhatIf。PowerShell 会模拟执行并告诉你“将把 XXX.cc 重命名为 XXX.cpp”,无任何实际改动。

















