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

使用Export-Csv生成CSV文件后执行Copy-Item报错:找不到名为'"C'的驱动器问题求助

解决PowerShell中Copy-Item因CSV引号导致的驱动器找不到错误

你遇到的这个问题确实和Export-Csv的默认行为有关,我来帮你拆解原因和解决办法:

问题根源

Export-Csv会遵循CSV格式规范,给每个输出字段(这里就是fullName)自动加上双引号。当你用Get-Content读取这个CSV文件时,每一行的路径是被双引号包裹的,比如:

"C:\Users\larry\Pictures\2003\example.jpg"

而且CSV的第一行是表头fullName,这一行也会被Get-Content读取到。当Copy-Item处理这些带引号的字符串时,会把"C:当成驱动器名称,自然就抛出了「找不到名为'"C'的驱动器」的错误。

三种解决办法

1. 清理CSV内容再复制

跳过CSV的表头行,同时移除每行字符串前后的双引号:

Get-Content $documents_export_file | Select-Object -Skip 1 | Foreach-Object {
    # 移除字符串首尾的双引号
    $cleanFilePath = $_.Trim('"')
    Copy-Item -Path $cleanFilePath -Destination $copy_to
}

2. 用Import-Csv解析CSV(推荐)

Import-Csv是PowerShell专门处理CSV文件的命令,它会自动解析字段,帮你拿到纯净的路径值,不用手动处理引号:

Import-Csv $documents_export_file | Foreach-Object {
    Copy-Item -Path $_.fullName -Destination $copy_to
}

3. 跳过CSV直接复制(最高效)

其实你完全可以省去导出CSV的中间步骤,直接在遍历文件时完成复制,既避免了CSV的格式问题,又提升了效率:

# 输入路径
$input_path = 'C:\Users\larry\Pictures\2003'
# 目标复制文件夹
$copy_to = "C:\Users\larry\Documents\Temp\ffmpeg\movies"

Get-ChildItem -Attributes !Directory -Path $input_path -Recurse -Force | ForEach-Object {
    Copy-Item -Path $_.FullName -Destination $copy_to
}

如果之后你还需要保留文件名列表的CSV文件,方法2依然是最稳妥的选择,它能正确处理CSV格式的内容,不会出现引号或表头的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:22:50