首页 > 解决方案 > 从全名获取目录,重命名目录

问题描述

我想查找全名超过 256 个字符的所有文件。

从这些文件中,我想重命名文件夹。

此刻我在这一点上

    $maxLength = 260
    $newPath = "a_path"

$paths = Get-ChildItem $newPath -force -Recurse | 
    Where-Object { ($_.FullName.Length -gt $maxLength) } |
    % {
     Write-Host $_.FullName
}

但现在我迷路了。

  1. 我不明白为什么命令 write-host $paths 不再起作用。
  2. 从全名我只需要目录,我试图用

    选择目录或拆分路径

但这也行不通。

  1. 我怎么能说将目录名称“修剪”为 $maxLength = 260

感谢您的一些提示!

CYA_D0c

标签: powershell

解决方案


  1. 我不明白为什么该命令write-host $paths不再起作用。

Write-Hostcmdlet替换为Select-Object

$maxLength = 260
$newPath = "a_path"
$paths = Get-ChildItem $newPath -Force -Recurse | Where-Object {$_.FullName.Length -gt $maxLength} | Select-Object -ExpandProperty FullName

$paths然后将是您所需的完整路径的列表。

  1. 从全名我只需要目录,我尝试使用 select Directoryor获取它Splith-Path。但这也行不通。

Splith-Path会做的:

$paths | Split-Path -Parent
  1. 我怎么能说将目录名称“修剪”为 $maxLength = 260

这并不像你想象的那么容易。你想把它修剪成什么名字?如果一个目录的修剪名称已经存在怎么办?

当然,您可以随时重命名目录,但是如果您想将目录名称自动修剪为特定长度,则需要一定的命名约定。

你原来的问题是什么?您是否仍在使用最大路径长度限制为 256 的 Windows 7 或旧的 MS Office 产品?


推荐阅读