Remove-Item - 目录名称必须小于248

时间:2015-02-03 22:35:49

标签: powershell scripting powershell-ise powershell-v4.0

这令我感到沮丧,所以我要求你们帮忙..

我有一百万(夸大一点)文件夹要删除,我可以一个接一个地从Windows资源管理器中删除YAY ...但我想在Powershell中编写脚本(版本4)

使用此代码:

$Path = '\\verylonguncpath\plussomemore\'
Remove-Item -Path $Path -Recurse -Force -Confirm:$False

我收到错误:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. At line:5 char:1 + Remove-Item -Path $Path -Recurse -Force -Confirm:$False + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (\\verylongpath\plussomemore:String) [Remove-Item], PathTooLongException + FullyQualifiedErrorId : RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

如果$Path不是很长......

我甚至尝试过映射到一封信然后删除内容但我遇到了同样的问题?

显然它的Microsoft或Powershell是我读过的问题吗?

可能是用户错误:\

任何建议都会很棒,我真的只想使用MS产品,但第三方程序会很好(在Powershell脚本中使用)..

谢谢Pav。

3 个答案:

答案 0 :(得分:1)

function Remove-FolderDeep([string]$folder){
$SubFolderList = Get-ChildItem -Path $folder -Directory -ErrorAction Ignore
for ($i = 0; $i -lt $SubFolderList.Length; $i++) {
    # rename the subfolder to avoid long file name
    Rename-Item -Path ($folder + "\" + $SubFolderList[$i]) -NewName ($folder + "\" + $i)
    Remove-FolderDeep -folder ($folder + "\" + $i)
}
# remove the folder 
Remove-Item $folder -Force -Recurse

}

答案 1 :(得分:0)

这有效:

Cmd /C "rmdir /S /Q $myDir"

只需确保使用引号创建变量并运行上述命令。

$mydir = "\pathToDelete\"

答案 2 :(得分:-2)

@ campbell.rw

谢谢!

现在我可以轻松删除这些文件夹:) YAY

Pavle为您提供51个虚假互联网积分

所以答案如下,它确实有效......对我来说确实如此。

Delete directory regardless of 260 char limit

Cmd /C "rmdir /S /Q $myDir"