查找文件,在找到具有不同扩展名的相同文件名时删除

时间:2015-09-15 20:05:33

标签: powershell

我试图找到任何有.log扩展名的东西。对于找到的文件,如果存在扩展名为.txt的相同文件名,则扩展名为.txt的REMOVE文件。

我猜我需要使用BaseName,但不知道如何去做。

如果存在以下文件:test1.log,test2.log,test1.txt

删除test1.txt

2 个答案:

答案 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"
}