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)
}
No comments:
Post a Comment