将for循环的变量插入另一个变量名

塔莱克

我正在尝试简化我的同事所做的Windows接口脚本,在该脚本中他使用了很多if循环,我认为可以使用for循环将其进一步缩短。

基本上,我们有几台计算机,每台计算机的范围为4-12,并且我们为每个管理员提供一个界面来还原其各自的快照。

我想用for循环中的$ i值替换每个变量中的数字。

我试过使用数组和哈希表,但是根据我收集到的数据,它们更适合存储值,而不是包含其他变量的公式。

if($ComputerNumber -eq 4) {
   $checkBoxComputer1LocX = $leftMargin
   $checkBoxComputer1LocY = [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding

   $checkBoxComputer2LocX = $leftMargin
   $checkBoxComputer2LocY = [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (1 * ([int]$checkBoxHeight + [int]$padding))

   $checkBoxComputer3LocX = $leftMargin
   $checkBoxComputer3LocY = [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (2 * ([int]$checkBoxHeight + [int]$padding))

   $checkBoxComputer4LocX = $leftMargin
   $checkBoxComputer4LocY = [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (3 * ([int]$checkBoxHeight + [int]$padding))
}

这是我要实现的目标:

for($i=1; $i -le $ComputerNumber; i++) {
   $checkBoxComputer$iLocX = $leftMargin
   $checkBOxComputer$iLocY = [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (($i - 0) * ([int]$checkBoxHeight + [int]padding))
}
mklement0

要使用变量间接寻址(通过存储在另一个变量中的名称来引用变量)进行赋值,请使用Set-Variable(对于检索,您可以使用Get-Variable):

for($i=1; $i -le $ComputerNumber; i++) {
  Set-Variable -Name checkBoxComputer${i}LocX -Value $leftMargin
  Set-Variable -Name checkBoxComputer${i}LocY -Value ([int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (($i - 0) * ([int]$checkBoxHeight + [int]padding)))
}

请注意,变量名如何$i{...}${i}括起来以便清楚地描述它,以便后续字符不被视为名称的一部分。


但是,您绝对可以使用数组自定义对象来代替单个变量,这是更好的选择:

[array] $checkBoxes = for($i=1; $i -le $ComputerNumber; i++) {
  [pscustomobject] @{ 
     LocX = $leftMargin
     LocY= [int]$labelSubHeaderLocY + [int]$buttonHeight + [int]$padding + (($i - 0) * ([int]$checkBoxHeight + [int]padding))
  }
}

上面创建了一个(0基于-index的)自定义对象的数组,每个对象都有一个.LocXand.LocY属性,因此,例如,您可以.LocX按以下方式访问第一个复选框的值:

$checkBoxes[0].LocX

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery动态将变量添加到另一个变量名

使用变量名来更改另一个变量名的名称

将变量插入另一个新变量

bash:创建一个包含另一个变量的变量名

如何将变量值批量放入另一个变量名中?

在bash脚本中基于另一个变量名创建对变量的引用?

使用另一个变量的内容创建变量名

能够在另一个变量名中使用变量?红宝石

如何将变量附加到另一个变量名称?

是否可以将一个变量的值插入另一个变量的名称?

Python / Django / Jinja2:如何用另一个变量的值扩展变量名(例如在for循环中)?

在另一个脚本中使用变量名访问数组?

循环一个UIElement变量名

用另一个变量的值替换变量名的一部分?

使用变量作为另一个变量名的一部分

Django使用模板变量的值作为另一个变量名的一部分

CSharp-将变量名存储在另一个变量中,以便可以在给定对象上动态调用它

如何在Javascript中将变量值放在另一个变量名中

使用循环变量获取另一个变量

Python3-将变量的值插入另一个变量命令

将基于共享根的相似变量名称粘贴到另一个变量中

VBA 是否可以将公共变量名称设置为另一个变量值?

如何将变量附加到for循环之外的另一个变量中?

将变量传递给另一个变量

将变量存储在另一个变量中

使用另一个变量递增变量名称

从XSLT中的另一个变量动态传递变量名称

Python-Scrapy:通过另一个函数产生一个定义在一个函数中的变量名

R:构建一个循环函数以基于变量名/索引聚合变量