我试图找到任何有.log扩展名的东西。对于找到的文件,如果存在扩展名为.txt的相同文件名,则扩展名为.txt的REMOVE文件。
我猜我需要使用BaseName
,但不知道如何去做。
如果存在以下文件:test1.log,test2.log,test1.txt
删除test1.txt
答案 0 :(得分:1)
这样的事情应该有效:
Get-ChildItem *.log -Recurse | Where-Object {
-not $_.PSIsContainer
} | ForEach-Object {
$txtfile = Join-Path $_.Directory ($_.BaseName + '.txt')
if (Test-Path -LiteralPath $txtfile) {
Remove-Item $txtfile -Force
}
}
答案 1 :(得分:0)
以下是使用Compare-Object的一种方法:
$ref = Get-ChildItem -Filter *.log | Select BaseName -ExpandProperty Basename
$dif = Get-ChildItem -Filter *.log | Select BaseName -ExpandProperty Basename
Compare-Object -ReferenceObject $ref -DifferenceObject $dif -IncludeEqual -ExcludeDifferent | % {
Remove-Item "$($_.InputObject).txt"
}