使用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
相关产品推荐
相关产品推荐

