假设我有一个数组
$f_attachments = @()
我拥有的每个文件,我只是将其附加
$f_attachments += $file
但是,我也想为该数组中保存的每个文件包括目录
换句话说,不必执行以下操作:
$f_attachments += $currentFolder\$file1
$f_attachments += $currentFolder\$file2
etc...
我可以在数组级别附加它吗?
$f_attachments = @($currentFolder)
更多说明
我有一个巨大的脚本。我在脚本的随机部分将文件(即$f_attachments += $file1
$f_attachments += $file2
等)附加到$f_attachments
数组。这个数组是在非常开始时定义的
$f_attachments = @()
假设我的完整脚本是这样的:
$f_attachments = @()
if()
{
do something...
$f_attachments += $currentFolder\$file1
}
else
{
do something...
$f_attachments += $currentFolder\$file2
}
....
如您所见,每次将文件添加到数组时,我都会添加$ currentFolder \
我想要一些数组定义级别的东西,在这里 $f_attachments = @()
这将自动附加 $currentFolder\
换句话说,理想的解决方案如下所示:
$f_attachments = @($currentFolder\)
if()
{
do something...
$f_attachments += $file1
}
else
{
do something...
$f_attachments += $file2
}
....
您可以使用a循环数组foreach-object
并添加文件夹名称。
该|
办法管。它从输入对象中获取数据,并将其发送到管道中的下一个命令。这%{}
是的别名Foreach-Object
。然后,您将输出从%{}
返回存储到变量中$files
$files = @("abc.txt","efg.txt","hij.txt","lmn.txt")
$files = $a | %{
"FolderName\$_"
}
$files
编辑:帖子已更新,并附带其他信息。
因此,您需要的是一个自定义对象,该对象将文件夹添加到添加的每个文件的名称中:
$Files = New-Object PSObject -Property @{
Array = @()
FolderName = ""
}
$Files | Add-Member -MemberType scriptmethod -Name Files -Value {
param([string]$File = "")
if($File.Length -eq 0){
return $this.Array
}else{
$this.Array += "$($this.FolderName)\$File"
}
}
$Files.FolderName = "FolderHere"
$Files.Files("Test.txt")
$Files.Files("Test2.txt")
$Files.Files("Test3.txt")
$Files.Files("Test4.txt")
$Files.Files()
这返回
FolderHere\Test.txt
FolderHere\Test2.txt
FolderHere\Test3.txt
FolderHere\Test4.txt
我们正在创建一个new-object PSObject
具有FolderName属性的属性,该属性将存储要添加到文件中的文件夹名称。阵列,其将保存最终阵列对象。文件,这将是一个ScriptMethod
将文件夹添加到名称,如果不输入任何成员作为PARAM将返回数组属性
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句