我在成千上万的目录中有数千个文件。其中一些路径失控并且比Windows可以处理的时间更长,因此当我尝试访问PowerShell中的文件时,出现错误。 如果文件夹包含一定长度的字符,如何在这些路径中重命名文件夹? (例如,一个文件夹的50多个字符)
修改
不,它不是Linux。
错误: 这是当我做一个递归的searce来查找服务器上的所有文件。
Get-ChildItem:指定的路径,文件名或两者都太长。 完全限定的文件名必须少于26 0个字符,并且 目录名称必须少于248个字符。
答案 0 :(得分:0)
使用subst
将父文件夹映射到驱动器号并从那里继续。
答案 1 :(得分: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+}