Я хотел бы l oop этот массив и вставить массив значений по массиву - PullRequest
0 голосов
/ 25 марта 2020
$number = $args[0]

$myarray = &{$h = @{}; foreach ($a in 1..$number) { $h["array$a"] = ""; } return $h; }

Write-Output $myarray

echo ============================================

if ($myarray["array1"] -eq "") {

    $myarray["array1"] = "C:\myscripts\Powershell_testing\FolderA\aa.txt" 

    Write-Output $myarray
}

elseif ($myarray["array2"] -eq "") {

    $myarray["array2"] = "C:\myscripts\Powershell_testing\FolderB\bb.txt"

    Write-Output $myarray

}


elseif ($myarray["array3"] -eq "") {

    $myarray["array3"] = "C:\myscripts\Powershell_testing\FolderC\cc.txt"

    Write-Output $myarray

}

else {

    Write-Output "Array is file exist"
}

введите описание изображения здесь

1 Ответ

0 голосов
/ 25 марта 2020

Прежде всего, вы вообще не имеете дело с массивами. Ваш код, по-видимому, предназначен для заполнения Hashtable созданными путями к файлам в качестве значений.

Почему бы не использовать простое для l oop для создания этого пути к файлу и добавления к ха sh в то же время?

Что-то вроде:

$number = 4
$myHash = @{}
for ($i = 1; $i -le $number; $i++) {
    # construct a file path and add that as value to the hashtable
    $file = "C:\myscripts\Powershell_testing\Folder{0}\{1}{1}.txt" -f [char](64 + $i), [char](96 + $i)
    $myHash["value$i"] = $file
}

$myHash

Вывод:

Name                           Value                                                                                                                                                       
----                           -----                                                                                                                                                       
value1                         C:\myscripts\Powershell_testing\FolderA\aa.txt                                                                                                              
value3                         C:\myscripts\Powershell_testing\FolderC\cc.txt                                                                                                              
value4                         C:\myscripts\Powershell_testing\FolderD\dd.txt                                                                                                              
value2                         C:\myscripts\Powershell_testing\FolderB\bb.txt

Или, если вы хотите, чтобы это было упорядочено (что по определению не является Hashtable):

$number = 4
$myHash = [ordered]@{}
for ($i = 1; $i -le $number; $i++) {
    # construct a file path and add that as value to the hashtable
    $file = "C:\myscripts\Powershell_testing\Folder{0}\{1}{1}.txt" -f [char](64 + $i), [char](96 + $i)
    $myHash["value$i"] = $file
}

$myHash

Вывод:

Name                           Value                                                                                                                                                       
----                           -----                                                                                                                                                       
value1                         C:\myscripts\Powershell_testing\FolderA\aa.txt                                                                                                              
value2                         C:\myscripts\Powershell_testing\FolderB\bb.txt                                                                                                              
value3                         C:\myscripts\Powershell_testing\FolderC\cc.txt                                                                                                              
value4                         C:\myscripts\Powershell_testing\FolderD\dd.txt 

[char](64 + $i) и [char](96 + $i) дают необходимые вам символы. ASCII 65 -> A и ASCII 97 -> a и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...