在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
导致错误的文件全部存在,我已经检查了路径,就我的眼睛所知,它们是否正确?
我唯一能说的是文件名异常长。但肯定不能成为这个原因吗?
答案 0 :(得分:0)
长UNC名称删除有问题。这是一个特定于操作系统的东西,限制是260个字符。
在Windows 10上,您可以启用长路径名,但这并不适用于所有情况。在某些情况下,您必须使用短名称,这需要一些转换工作。
与Beacon Bits'同样重要的事情。 state,因为没有.subfolder属性或方法。你可以通过......来看到这一点。
(gci D:\ Temp)| Get-Member |选择名称,MemberType
如果您在父文件夹或子文件夹中的文件之后,则使用...
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
...