我想在所有子文件夹中创建空文本文件。以下脚本将列出所有空子文件夹。
$a = Get-ChildItem D:\test -recurse | Where-Object {$_.PSIsContainer -eq $True}
$a | Where-Object {$_.GetFiles().Count -eq 0} | Select-Object FullName
如何迭代上述命令的输出并在其中创建空文本文件?
你为自己做的答案中有太多的循环。我提供这个解决方案,它将在没有文件的所有目录中创建一个空文件(如果他们有文件夹,那么从你的解决方案中就可以了,所以我保持这个逻辑。)
Get-ChildItem -Recurse C:\temp |
Where-Object {$_.PSIsContainer -and ($_.GetFiles().Count -eq 0)} |
ForEach-Object{[void](New-Item -Path $_.FullName -Name "Touch.txt" -ItemType File)}
如果$_.PSIsContainer
为false,那么它将不会打扰检查文件的其他条件。还将New-Item
的输出转换为void以停止成功创建所有这些新文件的输出。
以下代码对我有用。
$a = Get-ChildItem D:\test -recurse | Where-Object {$_.PSIsContainer -eq $True}
$path = $a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}
$a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}|ForEach-Object -Process {New-Item -Path $path -Name "testfile.txt" -Value "Test Value" -ItemType File }
如何确保..这不会在目录中创建文件,该目录中包含子目录。
即应在没有文件和子目录的目录中创建文件
这对我有用..它只在目录既没有子目录或文件时才创建文件
$a = Get-ChildItem C:\tejasoft -recurse | Where-Object {$_.PSIsContainer -eq $True -and ($_.GetDirectories().Count -eq 0)}
$path = $a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}
$a | Where-Object {$_.GetFiles().Count -eq 0} | foreach {$_.FullName}|ForEach-Object -Process {New-Item -Path $path -Name ".keep" -Value "Test Value" -ItemType File }