繁体   English   中英

无法使用Remove-Item -Recurse -Force递归删除某些文件

[英]Cannot recursively remove certain files with Remove-Item -Recurse -Force

在Powershell 5.1上
在foreach循环中使用它,例如:

foreach ($i in $folder.subfolders) {
   if( $i.path -like "*node_modules" ){
      Remove-Item $i.path -Force -Recurse
   }
}

我一直遇到这个特定的错误:

    + CategoryInfo          : WriteError: (_node_modules_r...dationpath.html:FileInfo) [Remove-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
Remove-Item : Cannot remove item C:\topDir\js\node_modules\ram
l-1-parser\documentation\interfaces\_node_modules_raml_definition_system_node_modules_raml_typesystem_dist_src_index_d_.numbertype.html:
Could not find a part of the path '_node_modules_raml_definition_system_node_modules_raml_typesystem_dist_src_index_d_.numbertype.html'.
At C:\topDir\re.ps1:12 char:11
+           Remove-Item $i.path -Force -Recurse

导致错误的文件全部存在,我已经检查了路径,据我所知,它们是正确的吗?
我唯一能看出的是文件名异常长。 但是可以肯定的是,这不是原因吗?

长UNC名称很难删除。 这是特定于OS的内容,限制为260个字符。

https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa365247%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

在Windows 10上,您可以启用长路径名,但这并不在所有情况下都有效。 在某些情况下,您必须使用短名称,这需要一些转换工作。

并且与“信标位”所声明的内容相同,因为没有.subfolder属性或方法。 您可以这样做...

(gci D:\\ Temp)| 成为会员| 选择姓名,会员类型

如果要在父文件夹或子文件夹中查找文件,请使用...

FullName                        Property

就像是...

(gci 'D:\Temp\*.txt' -Recurse).FullName

Results

D:\Temp\diff\TestFile_2.txt
...
D:\Temp\Duplicates\BeforeRename1\FsConfig.txt
...
D:\Temp\Duplicates\dup5\SomeRandomThing.txt
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM