如何删除文本文件中的目录路径行,仅保留文件路径行?
解决方案
我们无需硬编码任何文件扩展名,仅通过路径特征即可完成筛选:你给出的目录路径统一以斜杠 / 结尾,文件路径末尾为文件名,没有结尾斜杠,直接过滤掉所有以 / 结尾的行即可。
修正后的遍历代码
foreach ($line in [System.IO.File]::ReadLines("file.txt")) { if ($line -notmatch '/$') { $line } }
如果需要直接将筛选结果输出到新文件,可以使用更简洁的写法:
[System.IO.File]::ReadLines("file.txt") | Where-Object { $_ -notmatch '/$' } | Set-Content "result.txt" -Encoding UTF8
规则说明
- 正则表达式
/$代表匹配行末尾的/字符 -notmatch代表保留不满足匹配规则的行,也就是所有非目录结尾的路径- 兼容所有无后缀、未知后缀的文件路径,不需要提前预设任何文件格式规则
内容的提问来源于stack exchange,提问作者Christian Townsend
相关产品推荐
相关产品推荐

