PowerShell复制用户文件夹脚本报错:无法找到C盘驱动器
解决PowerShell复制文件时的「找不到驱动器」错误
看起来你遇到的问题很典型——那个报错里的'c'不是正常的C盘标识,而是路径里混入了不可见的特殊字符(比如零宽空格或者全角符号),导致PowerShell把它当成了一个不存在的驱动器名。我来帮你修正这个脚本,顺便优化一下逻辑:
第一步:排查并修复路径问题
你脚本里的"c:\Users\$user\Desktop\*"前面的c:带有隐藏字符,最简单的解决方法是手动重新输入整个路径,不要直接复制粘贴;或者更稳妥的是用PowerShell的环境变量来获取用户目录,完全避免路径拼写错误:
比如用$env:USERPROFILE代替C:\Users\$user,它会自动指向当前用户的主目录,不管系统安装在哪个盘。
第二步:修正后的完整脚本示例
下面是一个更可靠的版本,包含你需要的Documents、Photos、Desktop文件夹复制,还会自动创建目标文件夹:
# 定义目标根路径 $targetRoot = "D:\mapp1" # 获取当前用户名(也可以手动指定,比如$user = "sebbe") $user = $env:USERNAME # 目标用户文件夹路径 $targetUserFolder = Join-Path -Path $targetRoot -ChildPath $user # 自动创建目标文件夹(如果不存在) if (-not (Test-Path -Path $targetUserFolder)) { New-Item -Path $targetUserFolder -ItemType Directory | Out-Null } # 定义需要复制的源文件夹列表 $sourceFolders = @( Join-Path -Path $env:USERPROFILE -ChildPath "Desktop", Join-Path -Path $env:USERPROFILE -ChildPath "Documents", Join-Path -Path $env:USERPROFILE -ChildPath "Pictures" # Windows里Photos一般对应Pictures文件夹 ) # 遍历每个源文件夹进行复制 foreach ($folder in $sourceFolders) { if (Test-Path -Path $folder) { Write-Host "正在复制 $folder 到 $targetUserFolder..." # -Recurse 复制子文件夹,-Force 覆盖已存在的文件(根据需要调整) Copy-Item -Path "$folder\*" -Destination $targetUserFolder -Recurse -Force -ErrorAction SilentlyContinue } else { Write-Warning "源文件夹 $folder 不存在,跳过复制" } } Write-Host "复制操作完成!"
额外注意事项
- 如果需要复制其他文件夹,直接在
$sourceFolders数组里添加对应的路径即可 -ErrorAction SilentlyContinue会忽略复制中的错误(比如权限不足的文件),如果需要查看错误,可以改成-ErrorAction Continue- 运行脚本时最好右键选择「以管理员身份运行」,避免权限问题
内容的提问来源于stack exchange,提问作者Seb
相关产品推荐
相关产品推荐

