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

如何使用PowerShell提取文件路径中的文件名及扩展名并保存到新文件

PowerShell提取文件路径中的文件名与扩展名

嘿,这个需求用PowerShell处理简直手到擒来,我给你分享两种靠谱的方法,你可以根据习惯选:

方法一:使用.NET的Path类(推荐,兼容性拉满)

这个方法能完美应对各种复杂路径,比如带空格、特殊字符的情况,完全不会出错:

# 替换成你的源文件实际路径
$sourceFile = "C:\Demo\input.txt"
# 替换成你想要保存结果的目标路径
$targetFile = "C:\Demo\output.txt"

# 读取源文件的所有路径行
$allPaths = Get-Content -Path $sourceFile
# 逐个提取文件名+扩展名
$cleanedNames = $allPaths | ForEach-Object { [System.IO.Path]::GetFileName($_) }
# 将结果写入目标文件,指定UTF8编码避免乱码
$cleanedNames | Out-File -Path $targetFile -Encoding UTF8

这里划重点:[System.IO.Path]::GetFileName($_)是.NET原生的工具方法,专门用来从完整路径里剥离掉前面的目录部分,只留下带扩展名的文件名,处理各种边缘场景都稳得一批。

方法二:使用PowerShell原生的Split-Path命令

如果你更偏爱用PowerShell自带的命令,这个写法更简洁直观:

Get-Content "C:\Demo\input.txt" | 
    ForEach-Object { Split-Path $_ -Leaf } | 
    Out-File "C:\Demo\output.txt" -Encoding UTF8

Split-Path的-Leaf参数就是专门干这个的——直接提取路径的"最后一片叶子",也就是我们要的文件名加扩展名,用法非常直白。

额外小技巧:过滤无效行

如果你的源文件里有空白行或者无效的空路径,可以加一步过滤,确保结果干净:

Get-Content "input.txt" | 
    Where-Object { $_ -match '\S' } | # 过滤掉空白行
    ForEach-Object { [System.IO.Path]::GetFileName($_) } | 
    Out-File "output.txt" -Encoding UTF8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:49