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

编写PowerShell/Bat脚本按文件名最后下划线后内容归档文件

PowerShell 实现脚本
# 遍历当前目录下的所有文件(排除子目录)
Get-ChildItem -File | ForEach-Object {
    # 获取文件名(不含扩展名)
    $baseName = $_.BaseName
    # 按下划线分割文件名,取最后一段作为目标文件夹名
    $folderName = $baseName.Split('_')[-1]
    # 拼接目标文件夹路径
    $targetFolder = Join-Path -Path $_.DirectoryName -ChildPath $folderName
    # 如果文件夹不存在则创建
    if (-not (Test-Path -Path $targetFolder)) {
        New-Item -ItemType Directory -Path $targetFolder | Out-Null
    }
    # 移动文件到目标文件夹(-Force可覆盖同名文件,不需要可删除)
    Move-Item -Path $_.FullName -Destination $targetFolder -Force
}

使用说明

  • 先打开PowerShell,切换到要处理文件的目录,再运行这段脚本
  • 脚本会自动提取每个文件名最后一个下划线后的内容,以此创建文件夹并移动对应文件
  • 建议先测试:把 Move-Item 换成 Write-Output "$($_.FullName) -> $targetFolder",确认移动路径无误后再执行移动操作
Batch 实现脚本
@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下的所有文件
for %%f in (*.*) do (
    :: 跳过脚本自身,避免被移动
    if "%%~nf" == "%~n0" goto skip
    :: 获取文件名(不含扩展名)
    set "filename=%%~nf"
    set "foldername="
    :: 循环截取,提取最后一个下划线后的内容
    :loop
    if not "!filename!" == "" (
        for /f "delims=_ tokens=1*" %%a in ("!filename!") do (
            set "foldername=%%b"
            set "filename=%%b"
        )
        goto loop
    )
    :: 仅处理有下划线的文件,避免创建空文件夹
    if not "!foldername!" == "" (
        :: 文件夹不存在则创建
        if not exist "!foldername!" mkdir "!foldername!"
        :: 移动文件到目标文件夹(>nul隐藏移动提示,不需要可删除)
        move "%%f" "!foldername!\" >nul
    )
    :skip
)

echo 文件归类完成
pause

使用说明

  • 把这段代码保存成.bat格式的文件,放到要处理的文件目录里双击运行即可
  • 脚本会自动跳过自身,不会把脚本文件也移走
  • 如果文件名里没有下划线,脚本会跳过该文件,不会创建空文件夹

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:17:14