Powershell 将文本添加到没有文件/的文件夹和没有包含文件的子文件夹

Powershell 将文本添加到没有文件/的文件夹和没有包含文件的子文件夹,powershell,directory,file-management,rename-item-cmdlet,Powershell,Directory,File Management,Rename Item Cmdlet,我有从网上不同来源收集的代码。我相信,这段代码应该搜索并找到所有没有文件/及其子文件夹没有文件的文件夹,然后将文本“NA-”添加到这些文件夹的开头。当我检查时,一些明显为空的文件夹似乎没有标记。是不是我错过了什么??任何帮助都将不胜感激,谢谢 $CMfolder=get-childitem "Z:\folder\subfolder\subfolder2" -Recurse | Where-Object {$_.PsIsContainer -eq $true} $CMfolder | Where-

我有从网上不同来源收集的代码。我相信,这段代码应该搜索并找到所有没有文件/及其子文件夹没有文件的文件夹,然后将文本“NA-”添加到这些文件夹的开头。当我检查时,一些明显为空的文件夹似乎没有标记。是不是我错过了什么??任何帮助都将不胜感激,谢谢

$CMfolder=get-childitem "Z:\folder\subfolder\subfolder2" -Recurse |
Where-Object {$_.PsIsContainer -eq $true}
$CMfolder | Where-Object {$_.GetFiles().Count -eq 0 -and
$_.GetDirectories().count -eq 0} | 
where-object {$_.Name -Notlike "NA -*"} |

Rename-Item -NewName {"NA -" + $_.Name}
试试这个:

    Get-ChildItem "c:\temp" -recurse -directory -Force | where Name -Notlike "NA -*" |
 select *, @{N="HasChild";E={((Get-ChildItem $_.FullName -recurse -force -file).Count -ne 0)}} | where {! $_.HasChild}

代码查找空目录,即既不包含文件也不包含子目录的目录(无论这些子目录是否为空)。虽然代码可以优化,但它在功能上看起来是正确的;唯一需要注意的是,
getchilditem
命令将不包括隐藏的子目录;为此,请使用
-Force
。如果您仍然遇到无法解释的行为,请尝试提供一个或尽可能接近一个。相比之下,如果您正在查找递归空目录,即那些不包含任何内容或仅包含空子目录的目录,请参阅@mklement0谢谢您提供的内容。随着我的前进,这是一个非常好的信息。您的“使用PowerShell计算文件夹深度”是我想要做的。尝试运行时,我发现我没有管理员权限(也没有
Set ExecutionPolicy
的权限)。我明白了要点。我可以给它一个路径
$LiteralPath
,它检查是否有文件
$haveFiles=[bool]…
,并在文件夹中进行递归搜索。。。我甚至不会表现得像我理解的那样。我还是个新手,我怎么能不把它写成“参数化”脚本呢?感谢您的帮助。您可以使用
Set ExecutionPolicy-Scope CurrentUser…
仅为您更改执行策略,而不需要管理员权限。要使递归工作,您确实需要一个已定义的功能单元(脚本或函数)。我并不是建议您规避规则,但在必要时,您可以使用PowerShell CLI绕过有效的执行策略;e、 例如,
powershell-ExecutionPolicy Bypass-Command“'hi';get date”
powershell-ExecutionPolicy Bypass-File someScript.ps1
谢谢,但仍有问题。我刚刚意识到我没有管理员权限或设置执行策略。这可能是问题的一部分。