将for循环中的int变量与字符串连接

时间:2018-06-28 15:53:20

标签: powershell concatenation

我正在传递可能的四个文件名:FileName1,FileName2,FileName3,FileName4。

有些可能是空的,有些则不是。因此,在使用它们之前,我需要检查它们是否为空。因此,我认为我不会使用四个if语句,而是会遍历它们。我想做到的是这样的:

for ($i = 1; $i -lt 5; $i++) {
    $FileName = $FileName + $i
    Write-Host $FileName
}

所以我可以获取Filename1,FileName2,FileName3,FileName4。相反,我得到1、1 + 2,等等

我也尝试过$FileName$i$FileName"$($i)"$FileName + "$($i)"

有什么想法吗?

编辑

FileName1,FileName2,FileName3,FileName4是传递给脚本的变量。它们可以是FileName1="Budget2018.xlsx"FileName2="MonthlyExpenses.xlx"FileName3=""FileName4=""。或所有四个变量都可以包含值...或仅FileName1可以包含值,等等。

在继续处理它们之前,我需要检查它们是否为空。因此,与其使用4 if语句检查它们是否为空,我想我可以遍历它们,将变量引用为$Filename$i,其中$i的值将为1到4。两个值一起代表作为参数的变量。

3 个答案:

答案 0 :(得分:1)

如果我了解您想要什么,那么应该这样做:

For($i = 1; $i -lt 5; $i++){
        $FileName = 'FileName{0}' -f $i
        Write-Host $FileName
}

如果要将名称的根部分定义为变量,则:

$root = 'FileName'
For($i = 1; $i -lt 5; $i++){
        $FileName = '{0}{1}' -f $root,$i
        Write-Host $FileName
}

好的,所以根据最近的编辑,这是一种执行我现在认为想要的方法:

1..4 | %{(ls variable:\$("FileName$_")).value}

答案 1 :(得分:1)

这会产生FileName1,FileName2等,但是我不确定该如何与“我正在传递四个可能的文件名”相乘,因为您的脚本中没有列表。

For($i = 1; $i -lt 5; $i++){

        $FileName = "FileName$i"
        Write-Host $FileName
    }

答案 2 :(得分:0)

如果您只有一个文件名,并且希望以此为基础创建列表,则可以执行以下操作:

$FileName = 'test'
$FileList = for ($i = 1; $i -le 4; $i++) { "$FileName$i" }
$FileList
# => test1
# => test2
# => test3
# => test4

但是我怀疑您有一个文件列表,因为您的问题中提到了“检查是否为空/空”。