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

如何用PowerShell拆分CSV的Path列并区分文件与文件夹

解决CSV路径列的文件/文件夹标记问题

核心需求

处理CSV中Path列,以最后一个反斜杠为分界,判断后方内容是否含点:含点标记为File(文件),不含则标记为Folder(文件夹)。

修正后的完整代码

# 导入目标CSV文件
$CSVImport = Import-Csv -Path "你的CSV文件路径.csv"

$Result = foreach($CSVLine in $CSVImport){
    $CSVLine | 
        Select-Object -Property *,
            @{
                Name = 'Type'; 
                Expression = {
                    # 用.NET方法可靠获取路径最后一段(自动处理末尾反斜杠情况)
                    $lastSegment = [System.IO.Path]::GetFileName($_.Path)
                    # 判断是否包含点,返回对应标记
                    if ($lastSegment -match '\.') {
                        "File"
                    }
                    else {
                        "Folder"
                    }
                }
            }
}

# 预览结果
$Result | Format-Table -AutoSize

# 导出标记后的新CSV
$Result | Export-Csv -Path "标记完成的CSV文件.csv" -NoTypeInformation -Encoding UTF8

关键说明

  1. 路径分段的可靠方法:
    用[System.IO.Path]::GetFileName()替代手动拆分,能自动处理路径末尾带反斜杠的异常场景,比-split '\\'更鲁棒。

  2. 判断逻辑简化:
    也可以用PowerShell三元运算符缩短代码,将Expression块替换为:

    Expression = {
        $lastSegment = [System.IO.Path]::GetFileName($_.Path)
        $lastSegment -match '\.' ? "File" : "Folder"
    }
    
  3. 原代码问题修正:

    • 原代码中($_.Path -split "\")[-2]取的是倒数第二段内容,不符合需求,若坚持用split应改为[-1];
    • 补充了完整的判断逻辑,实现标记值的正确返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:55:23