Powershell > 找不到路径,但它确实存在

Posted

技术标签:

【中文标题】Powershell > 找不到路径,但它确实存在【英文标题】:Powershell > Path not found but it really exists 【发布时间】:2013-05-20 04:11:48 【问题描述】:

我有以下 powershell 将文件从服务器移动到本地。我一直找不到路径。路径长约 280 个字符 + 文件名约 30 到 70 个字符。怎么办?

$destDir = "C:\test\Files\"
$csv = import-csv 'C:\test\FilesWithPath.csv'

#For each line in the CSV
$csv | %                                                            

            robocopy $_.SourceFilePath $destDir $_.SourceFileName 
        

【问题讨论】:

你超过了256个字符的最大路径限制,有什么办法可以移动单个文件或简化路径? 嗯,想法是将这些文件(从长服务器路径)移动到本地,以便我可以使用另一个脚本将这些文件从本地驱动器移动到 SharePoint。 使用 robocopy:social.technet.microsoft.com/wiki/contents/articles/… 你为什么编辑你的问题实际上是一个答案?如果没有原始问题,问答格式就会丢失。答案已经在下面了。将您的问题恢复为原始的非工作版本。 Find long file path 但同样的想法也适用于移动数据。 【参考方案1】:

我的建议是这样的: 使用它来查找路径超过 256 个字符的所有文件 - How do I find files with a path length greater than 260 characters in Windows?

保存到 CSV 并将另一个脚本写入 CD 到该位置,然后仅使用文件名和目标路径复制/移动。

【讨论】:

【参考方案2】:

信贷归 C.B.

这是使用 Robocopy 处理 LONG 文件路径的代码。

$destDir = "C:\test\Files\"
$csv = import-csv 'C:\test\FilesWithPath.csv'

#For each line in the CSV
$csv | %                                                            

            robocopy $_.SourceFilePath $destDir $_.SourceFileName 
        

【讨论】:

【参考方案3】:

处理此问题的一种可能方法是将父目录subst 复制到驱动器号并从那里复制文件:

$csv | % 
  $i = $_.SourceFilePath.LastIndexOf('\')
  $d = $_.SourceFilePath.SubString(0, $i)
  $f = $_.SourceFilePath.SubString($i+1)

  subst T: $d
  Copy-Item "T:\$f" $destDir
  subst T: /d

【讨论】:

以上是关于Powershell > 找不到路径,但它确实存在的主要内容,如果未能解决你的问题,请参考以下文章

带有路径的Powershell foreach找不到文件

win10 找不到powershell

Microsoft Office setup找不到powershell

powershell设置背景图片文件路径

使用 Microsoft.PowerShell.Commands 找不到命名空间“CopyItemCommand”

找不到lib Qt,但它存在于路径中