2

我在数千个目录中有数千个文件。其中一些路径失控并且比 Windows 可以处理的更长,因此当我尝试访问 PowerShell 中的文件时,我得到一个错误。如果这些路径中的文件夹包含一定长度的字符,如何重命名它们?(例如,一个文件夹 50 多个字符)

编辑:

不,它不是 Linux。

错误: 这是当我进行递归搜索以查找服务器上的所有文件时。

Get-ChildItem :指定的路径、文件名或两者都太长。完全限定的文件名必须少于 26 个 0 字符,目录名必须少于 248 个字符。

4

2 回答 2

0

用于subst将父文件夹映射到驱动器号并从那里继续。

于 2013-02-10T01:08:01.807 回答
0

在与另一个人一起编写代码后,我们能够想出一些可行的方法。实际上,我不得不缩短搜索长度,因为其中一些路径真的失控了。

takeown /f \\server\share\foo /r /d Y /a >c:\takeown.log

$folders= Get-ChildItem -Path "\\server\share\foo" -recurse | where {$_.PsIsContainer}
$sortedfolders = $folders | sort-object -descending -property fullname
foreach ($f in $folders) {
if ($f.name.length -gt 10) { 

   rename-item $f.fullname (get-random).tostring()
   } 
}


$aolesfolders | gm

$sorted | ft fullname
$aolesfolders | select-object name, root, fullname, parent | export-csv     c:\testrename.txt
get-random | gm
(get-random).ToString().gettype()

foreach ($f in $folders) {
if ($f.name.length -gt 10) { 

   rename-item $f.fullname (get-random).tostring()
   } 
} 

{rename-item $f.name $f.parent+}
于 2013-02-11T16:53:48.247 回答