PowerBuilder – Find windows where datawindow is used

If You have a listo of datawindows and would like to make a list of windows where each of these datawindows are used, this Power-Shell function might help.

By tweaking it You could search for whatewher You need, but basic concept is below.

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

$windowTitles = "windowsTitles.txt"

New-Item $windowTitles -type file -force

function search ([string]$fullName) {

$shortName =  [io.path]::GetFileNameWithoutExtension($fullName)

$files = gci -include *.srw,*.sru,*.srd -recurse | select-string $shortName | group path | select name

$found = 0

if ($files.Count -eq 0) { return 0 }

foreach ($file in $files)

{

$shortName2 =  [io.path]::GetFileNameWithoutExtension($file.Name) if ($shortName -eq $shortName2) { continue }

$found = $found + 1

Write-Host "Used in: " $shortName2

If ($file.Name.EndsWith(".srw")) {

Write-Host "Used in: " $shortName2 " and its a WINDOW!"

$titleString =  Get-Content $file.Name | select-string -pattern "string title = "

if (-not $titleString) {

Write-Host "Window has no title"

Return 1

}

Write-Host "Windows title is:" $titleString

$title = $titleString.line.replace("string title = ","")

# write title to file

Add-Content -Encoding UTF8 $windowTitles $title

Return 1

} Else {

Return search($file.Name)

}

}

Return $found

}
Use it something like this ( is same PS1 file for example ) :


$files = gci -include *.srd -recurse | Where-Object {$_.FullName -like "*\$folder\*"} | select-string '!!!!ADD YOUR REGEX HERE!!!' | group path | select name
Write-Host "Found number of datawindows:"
Write-Host $files.Count
$index = 0
foreach ($file in $files)
{
if (-Not $file.Name) {break}
$dwShortName =  [io.path]::GetFileNameWithoutExtension($file.Name)
Write-Host "Searching for: " $dwShortName
$found = search($file.Name)
}

Leave a Reply

Your email address will not be published. Required fields are marked *