Powershell: рекурсивные каталоги, для которых существует расширение файла, если Exist выписывает запятую, если не запускает команду - PullRequest
0 голосов
/ 30 ноября 2018

В частности, у меня есть каталог с кучей других случайных имен каталогов (не совсем случайных, но это не важно).В этих каталогах некоторые содержат файлы с расширением .tsidx, некоторые нет.

Каталоги с расширением .tsidx, которые я хочу вывести на экран, в котором файл .tsidx уже существует.Те, которые НЕ хотят, чтобы он выводил его, не существуют, а затем запускают команду для создания файлов tsidx для каталога, используя исполняемый файл, предоставленный автором программы.

Вот что сейчас в моем коде:

$index = Read-Host "Enter the Index Name" #This is to receive a directory  location from user
$loc = "F:\thawdb\splunk\$index\thaweddb"
$dir = dir $loc

cd "d:\splunk\bin"
foreach ($d in $dir) 
{
   if (gci -dir | ? { !(gci $_ -file -recur -filter *tsidx) })
      {
         # writes out the directory contains files and doesn't need rebuilt
         Write-host -foregroundcolor Yellow "TSIDX Exists"
      }
      else
      {
         # writes out rebuild is necessary and runs the rebuild
         write-host -Foregroundcolor Green "Running Rebuild command against $loc\$d" | .\splunk.exe rebuild $loc\$d 
      }
}

1 Ответ

0 голосов
/ 30 ноября 2018

Понятия не имею, что делает splunk.exe, я думаю, что это должно сделать это:

$index = Read-Host "Enter the Index Name" #This is to receive a directory  location from user
$loc = "F:\thawdb\splunk\$index\thaweddb"

# get a collection of DirInfo objects for all directories in the path
$dir = Get-ChildItem $loc -Directory -Recurse

Set-Location "d:\splunk\bin"

# loop through the DirInfo collection
foreach ($d in $dir) {
   if ((Get-ChildItem -Path $d.FullName -File -Filter '*.tsidx').Count) {
         # writes out the directory contains files and doesn't need rebuilt
         Write-host -foregroundcolor Yellow "TSIDX Exists in $($d.FullName)"
    }
    else {
        # writes out rebuild is necessary and runs the rebuild
        Write-Host -Foregroundcolor Green "Running Rebuild command against $($d.FullName)" 
        & .\splunk.exe rebuild "$($d.FullName)"
    }
}
...