首页 > 系统相关 >powershell遍历文件获取字段列表

powershell遍历文件获取字段列表

时间:2024-02-26 09:14:08浏览次数:25  
标签:遍历 matches list 列表 alias Matches table powershell match

 
  
# 指定要搜索的文件夹路径和正则表达式关键字  
$folderPath = "C:\myapp\"  

$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 " "
    #}
}

  

标签:遍历,matches,list,列表,alias,Matches,table,powershell,match
From: https://www.cnblogs.com/coolyylu/p/18033597

相关文章

  • VS中任务列表的妙用
    VisualStudio/VS中任务列表的妙用一、任务列表开启方法首先说下开启的方法:视图-任务列表,即可打开任务列表。快捷键Ctrl+'\'+T,熟练了可以快速开启。注意,'\'键是回车键上面的’’,不要按成了'/'二、任务列表标签设置设置的方法:工具-选项-环境-任务列表。内置有三种,如TODO、UND......
  • SharePoint Online 列表启用条形码
    前言我们经常会在项目中使用条形码,尤其是和移动设备相关的系统上,而SharePointOnline列表默认就支持这样的功能。正文1.我们进入列表设置,找到“Informationmanagementpolicysettings”,如下图:2.点击Item,如下图:3.勾选启用条形码,点击保存,如下图:......
  • 列表切片
    句法结构 slice=list[start:stop:step]list是你要进行切片的列表。start是切片的起始索引,如果省略,则从列表的开头开始。stop是切片的结束索引,但不包括该索引对应的元素。如果省略,则切片会一直到列表的末尾。step是切片的步长,即每次跳过多少个元素。如果省略,则默认为1......
  • powershell 5 信息收集命令
    PowerShell命令来查看当前用户及其权限:powershellCopyCode#获取当前登录的用户$env:USERNAME#获取计算机名称$env:COMPUTERNAME#检查当前用户是否为管理员([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([S......
  • 二叉树查找树遍历
    二叉树查找树遍历存放规则:小的存左边、大的存右边、一样的不存前序、中序、后序指的是当前结点的顺序前序:当前结点、左子节点、右子节点中序:左子节点、当前节点、右子节点后序:左子节点、右子节点、当前结点前序遍历中左右遍历完左树遍历右树从上到下,根节点->从左......
  • powershell 获取 CPU RAM DISK 序列号
    PowerShell中获取CPU序列号可以通过WMI(WindowsManagementInstrumentation)来实现。下面是一个示例代码,演示如何在PowerShell中获取CPU序列号:powershellCopyCode#使用WMI获取CPU信息$cpu=Get-WmiObject-ClassWin32_Processor|Select-ObjectName,Processo......
  • 【列表】
    定义:列表是写在方括号[]之间、用逗号分隔开的元素列表,列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套),列表中的元素是可以改变。注意:列表的元素类型不唯一。forexample,list_1=["帅帅","学习","python",......
  • powershell 制作工具菜单
    functionmainMenu{$mainMenu='X'while($mainMenu-ne''){Clear-HostWrite-Host"`n`t`tMyScript`n"Write-Host-ForegroundColorCyan"MainMenu"Write-Host-ForegroundColo......
  • Windows 10 如何隐藏登录界面左下角的用户列表
    步骤讲解编辑注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon下新建项SpecialAccountsSpecialAccounts中再新建项UserListUserList中新建值->整数值,名称写需要隐藏的用户名,数值保持默认0保存,确认生效貌似不需要重启即可......
  • 如何在C#中使用 Excel 动态函数生成依赖列表
    前言在Excel中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告,例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年份-区域】列表以及生产摘要报告中的【单位-......