我正在传递可能的四个文件名: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。两个值一起代表作为参数的变量。
答案 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
但是我怀疑您有一个文件列表,因为您的问题中提到了“检查是否为空/空”。