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