You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PowerShell/命令提示符批量添加文件夹名为文件后缀的实现问询

嘿,作为刚接触PowerShell和CMD的新手,这个需求完全不用愁!我给你准备了两种工具的实现方法,而且都能自动把当前文件夹的名字当成后缀加到每个文件名里,一步步来就行👇

PowerShell 实现方案

直接复制下面的代码到PowerShell里(或者存成.ps1脚本放到目标文件夹运行):

# 获取当前文件夹的名字
$folderName = $PWD.Name

# 遍历当前文件夹下的所有文件(排除文件夹和脚本自身)
Get-ChildItem -File -Exclude $MyInvocation.MyCommand.Name | ForEach-Object {
    # 处理文件名:在扩展名前加上_文件夹名
    if ($_.Extension) {
        $newName = $_.Name -replace '(\.[^.]+)$', "_$folderName`$1"
    } else {
        # 没有扩展名的文件直接在末尾加_文件夹名
        $newName = "$($_.Name)_$folderName"
    }
    # 执行重命名
    Rename-Item -Path $_.FullName -NewName $newName
}

简单说明:

  • $PWD.Name:自动抓取当前打开的文件夹名称,不用手动输入
  • Get-ChildItem -File:只处理文件,不会误改文件夹
  • -Exclude $MyInvocation.MyCommand.Name:避免把你用来运行的脚本自己给改名了
  • 分两种情况适配:有扩展名的文件在后缀前加标记,没扩展名的直接在文件名末尾追加
命令提示符(CMD)实现方案

如果更习惯用CMD,把下面的代码存成.bat文件放到目标文件夹,双击运行即可:

@echo off
setlocal enabledelayedexpansion

:: 获取当前文件夹的名字
for %%i in (.) do set "folderName=%%~ni"

:: 遍历所有文件(排除脚本自身)
for /f "delims=" %%f in ('dir /b /a-d ^| findstr /v /i "%~nx0"') do (
    ren "%%f" "%%~nf_!folderName!%%~xf"
)

echo 重命名完成!
pause

简单说明:

  • setlocal enabledelayedexpansion:开启延迟变量扩展,确保文件夹名称能正确读取
  • for %%i in (.) do set "folderName=%%~ni":提取当前文件夹的纯名称
  • dir /b /a-d:只列出当前文件夹里的文件(不含子文件夹)
  • findstr /v /i "%~nx0":排除当前运行的.bat脚本,防止误改
  • %%~nf是文件名(不含扩展名),%%~xf是扩展名,拼接后就是「原文件名_文件夹名.扩展名」的格式

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

火山引擎 最新活动