【问题标题】:Powershell > Path not found but it really existsPowershell > 找不到路径,但它确实存在
【发布时间】: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。
  • 你为什么编辑你的问题实际上是一个答案?如果没有原始问题,问答格式就会丢失。答案已经在下面了。将您的问题恢复为原始的非工作版本。
  • Find long file path 但同样的想法也适用于移动数据。

标签: powershell


【解决方案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
      }
      

      【讨论】:

        猜你喜欢
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多