【问题标题】:How to create ForEach loop to go through multiple variables Powershell如何创建 ForEach 循环以遍历多个变量 Powershell
【发布时间】:2013-08-06 11:34:32
【问题描述】:

我遇到了 ForEach 循环的问题。我试图遍历多个相同类型的变量,只是增加不同。 我试图根据同一行中的标签是否有文本来更改 TextBox 文本。

这就是我可以为每个标签编写和 IF 语句的方法,但我正在寻找一种通过 ForEach 循环循环这些块中的每一个的方法。我总共有 8 个标签和文本框。

这是代码:(我相信你会弄清楚我在追求什么 :))

IF ( $Label1.Text.Length -ne 0 ) 
{ 
    $Label1.Visible = $true
    $TextBox1.Visible = $true

    $TextBox1.Text = ( "Enter new name for " + $Label1.Text ) 
}

ForEach 示例

$Count = 1..8

$Count | ForEach-Object {

     IF ( $Label($_).Text.Length -ne 0 )
     {
          $Label($_).Visible = $true
          $TextBox($_).Visible = $true

          $TextBox($_).Text = ( "Enter new name for " + $Label($_).Text )
     }
}

等等……

我尝试将变量放入数组并通过这种方式循环,但当然数组将类型更改为字符串,但它不起作用......

【问题讨论】:

    标签: powershell foreach


    【解决方案1】:

    试一试,我无法使用标签和文本框对象对其进行测试,但它可以更好地调整它:

     1..8  | ForEach-Object {
    
         IF ( (iex "`$Label$_.Text.Length") -ne 0 )
         {
            iex  "`$Label$_.Visible = `$true"
            iex  "`$TextBox$_.Visible = `$true"
    
            iex  "`$TextBox$_.Text = 'Enter new name for ' + `$Label$_.Text"
         }
    }
    

    【讨论】:

    • 这对我有用。我不知道这是在做什么,但我想弄清楚!
    • @user2656503 iexaliasinvoke-expression (尝试get-help invoke-expression -full 了解它)。记得接受这个作为答案,谢谢。
    【解决方案2】:

    您可以为此目的使用 Get-Variable cmdlet:

     1..8 | ForEach-Object {
    
         if ( (Get-Variable "Label$_").Value.Text.Length -ne 0 )
         {
             (Get-Variable "Label$_").Value.Visible = $true
             (Get-Variable "Label$_").Value.Visible = $true
             (Get-Variable "Label$_").Value.Text = ( "Enter new name for " + (Get-Variable "Label$_").Value.Text )
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 2011-12-09
      • 2018-07-17
      • 1970-01-01
      • 2016-01-18
      • 2018-01-15
      • 2021-06-28
      • 1970-01-01
      相关资源
      最近更新 更多