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

使用TSQL将波浪线分隔的文件名字符串解析为列

解析带波浪线分隔符的文件名(忽略路径和扩展名)

没问题,我来帮你搞定这个文件名解析的需求!核心思路很清晰:先把文件的路径和扩展名完全剥离,只保留中间的纯文件名部分,再用波浪线~作为分隔符拆分出对应的列。

先拿你的示例文件名来拆解:

原始文件名:C:\My Documents\PDF\Walker~Thomas~19991226~20180416150322.pdf
剥离后得到纯文件名:Walker~Thomas~19991226~20180416150322
拆分后列内容:

  • 列1:Walker(姓氏)
  • 列2:Thomas(名字)
  • 列3:19991226(出生日期,格式YYYYMMDD)
  • 列4:20180416150322(时间戳,格式YYYYMMDDHHMMSS)

下面给你几种常用工具的实现方案,按需选择:

Python 实现

Python的os.path模块可以轻松处理路径和扩展名,代码简洁直观:

import os

def parse_filename(file_path):
    # 剥离路径,得到带扩展名的文件名:Walker~Thomas~19991226~20180416150322.pdf
    filename_with_ext = os.path.basename(file_path)
    # 剥离扩展名,得到纯文件名:Walker~Thomas~19991226~20180416150322
    pure_filename = os.path.splitext(filename_with_ext)[0]
    # 用~拆分得到各列
    columns = pure_filename.split('~')
    return columns

# 测试示例
test_path = r"C:\My Documents\PDF\Walker~Thomas~19991226~20180416150322.pdf"
result = parse_filename(test_path)
print("拆分结果:", result)
# 输出:拆分结果: ['Walker', 'Thomas', '19991226', '20180416150322']

PowerShell 实现

如果是Windows环境用PowerShell处理批量文件,这个方案很方便:

$filePath = "C:\My Documents\PDF\Walker~Thomas~19991226~20180416150322.pdf"

# 剥离路径和扩展名,得到纯文件名
$pureFilename = [System.IO.Path]::GetFileNameWithoutExtension($filePath)

# 用~拆分列
$columns = $pureFilename -split '~'

# 输出各列
Write-Host "列1(姓氏):" $columns[0]
Write-Host "列2(名字):" $columns[1]
Write-Host "列3(出生日期):" $columns[2]
Write-Host "列4(时间戳):" $columns[3]

Windows Batch 脚本实现

要是需要用CMD批量处理,这个脚本可以帮你:

@echo off
setlocal enabledelayedexpansion

set "filePath=C:\My Documents\PDF\Walker~Thomas~19991226~20180416150322.pdf"

:: 剥离路径,得到带扩展名的文件名
for %%f in ("%filePath%") do set "filenameWithExt=%%~nf%%~xf"
:: 剥离扩展名,得到纯文件名
for %%f in ("%filenameWithExt%") do set "pureFilename=%%~nf"

:: 用~拆分各列(通过循环逐个提取)
set "temp=!pureFilename!"
set "count=1"
:splitLoop
for /f "tokens=1* delims=~" %%a in ("!temp!") do (
    set "column!count!=%%a"
    set "temp=%%b"
    set /a count+=1
    if not "!temp!"=="" goto splitLoop
)

:: 输出结果
echo 列1(姓氏):!column1!
echo 列2(名字):!column2!
echo 列3(出生日期):!column3!
echo 列4(时间戳):!column4!

endlocal

注意事项

  • 确保所有目标文件名的格式完全一致,每个纯文件名都包含4个波浪线分隔的字段,避免出现字段缺失或多余的波浪线,否则拆分结果会出错。
  • 批量处理时,只需要把单个文件路径替换成批量遍历的逻辑(比如Python的os.listdir,PowerShell的Get-ChildItem)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:17:56