我在数千个目录中有数千个文件。其中一些路径失控并且比 Windows 可以处理的更长,因此当我尝试访问 PowerShell 中的文件时,我得到一个错误。如果这些路径中的文件夹包含一定长度的字符,如何重命名它们?(例如,一个文件夹 50 多个字符)
编辑:
不,它不是 Linux。
错误: 这是当我进行递归搜索以查找服务器上的所有文件时。
Get-ChildItem :指定的路径、文件名或两者都太长。完全限定的文件名必须少于 26 个 0 字符,目录名必须少于 248 个字符。
我在数千个目录中有数千个文件。其中一些路径失控并且比 Windows 可以处理的更长,因此当我尝试访问 PowerShell 中的文件时,我得到一个错误。如果这些路径中的文件夹包含一定长度的字符,如何重命名它们?(例如,一个文件夹 50 多个字符)
编辑:
不,它不是 Linux。
错误: 这是当我进行递归搜索以查找服务器上的所有文件时。
Get-ChildItem :指定的路径、文件名或两者都太长。完全限定的文件名必须少于 26 个 0 字符,目录名必须少于 248 个字符。
用于subst
将父文件夹映射到驱动器号并从那里继续。
在与另一个人一起编写代码后,我们能够想出一些可行的方法。实际上,我不得不缩短搜索长度,因为其中一些路径真的失控了。
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+}