# 指定要搜索的文件夹路径和正则表达式关键字
$folderPath = "C:\myapp1\","C:\myapp2\"
$table_list = "tblBOM,tblTest"
$tables = $table_list.Split(',')
foreach ($table in $tables) {
$regexPattern_field = "$table\.(\w+)\b" # 匹配 "$table." 后跟一个或多个任意字符
# 获取文件夹中的所有文本文件(可以根据需要修改文件类型过滤器)
$textFiles = Get-ChildItem -Path $folderPath -Recurse -Include *.cs,*.sql
$fieldNames = @()
# 在每个文件中搜索关键字
foreach ($file in $textFiles) {
# 使用Select-String和正则表达式搜索关键字
$content = Get-Content -LiteralPath $file.FullName -Raw
$matches = Select-String -Pattern $regexPattern_field -AllMatches -InputObject $content;
# 如果找到匹配项,则输出文件名和匹配行
if ($matches.Matches.Count -gt 0) {
foreach ($match in $matches.Matches) {
# 提取第一个捕获组,即tblItem后的字段名
# 如果需要多个字段,可以调整捕获组以匹配更多内容
$fieldName = $match.Groups[1].Value.Trim()
# 添加字段名到数组
$fieldNames += "," + $table + "." + $fieldName
}
}
$regexPattern = "$table\b.(\w+)\t"
$matches = Select-String -Pattern $regexPattern -AllMatches -InputObject $content;
$alias_list = @()
# 如果找到匹配项,则输出文件名和匹配行
if ($matches.Matches.Count -gt 0) {
foreach ($match in $matches.Matches) {
$alias = $match.Groups[1].Value.Trim()
$alias_list += $alias
}
}
if ($alias_list.Count -gt 0){
$alias_list_end = $alias_list | Sort-Object -Unique
foreach ($alias in $alias_list_end) {
$regexPattern_alias = "$alias\.(\w+)\b"
$matches = Select-String -Pattern $regexPattern_alias -AllMatches -InputObject $content;
# 如果找到匹配项,则输出文件名和匹配行
if ($matches.Matches.Count -gt 0) {
foreach ($match in $matches.Matches) {
$fieldName = $match.Groups[1].Value.Trim()
$fieldNames += "," + $alias + "." + $fieldName
}
}
}
}
}
#if ($fieldNames.Length -gt 0){
Write-Host " "
Write-Host "select "
$fieldNames | Sort-Object -Unique
Write-Host " from $table;"
Write-Host " "
Write-Host " "
#}
}