Powershell: для каждого l oop l oop со списком проблем - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь l oop список с помощью функции, которую я сделал. Что я хочу сделать с l oop, так это то, что переменная: "$ huidige_folder" внутри функции заполняется одним местоположением, которое есть в списке, l oop, и продолжается со следующего местоположения в списке.

  1. Итак, первый элемент в списке: «C: \ Users \ Nick \ Desktop \ Test1». Он использует это местоположение в функции
  2. Then C: \ Users \ Nick \ Desktop \ Test2 ". Он использует это местоположение в функции
  3. Then C: \ Users \ Nick \ Рабочий стол \ Test3 ". Он использует это место в функции

Но когда я запускаю код, он запускает функцию только для первого элемента в списке. Это работает и делает то, что я хочу. Но после этого он останавливается и выполняет функцию для двух других элементов в списке.

Что я делаю не так?

$path_dagelijkse_controle = "C:\Users\Nick\Desktop\Test1",
                            "C:\Users\Nick\Desktop\Test2", 
                            "C:\Users\Nick\Desktop\Test3"



function Dagcontrole_folders_maken {($huidige_folder)

$Dagelijkse_controle = "Dagelijkse controle"
$datum_vandaag = $(Get-Date).toString('yyyy-MM-dd')
$jaar = $datum_vandaag.Substring(0,4)
$maand = $datum_vandaag.substring(5, 2)
$dag = (get-date).DayOfWeek

$path_jaar = Get-Item -Path "$huidige_folder\**" -Include *$jaar*
$path_maand = Get-Item -Path "$huidige_folder\$jaar\**" -Include *$maand*
$folder_maand = Get-Date -UFormat "%m - %B"


if ($path_jaar) {
    Write-Output "Do Nothing"
}
Else {   
    md -Path "$huidige_folder\$jaar"   
}

if ($path_maand) {
  md -Path "$huidige_folder\$jaar\$folder_maand\Dagelijks\$datum_vandaag"  
}
Else {
    md -Path "$huidige_folder\$jaar\$folder_maand"                              # Makes the month folder
    md -Path "$huidige_folder\$jaar\$folder_maand\Dagelijks\$datum_vandaag"     # Makes a folder with current date inside the month folder
}

}


Foreach ($i in $path_dagelijkse_controle) {
    Dagcontrole_folders_maken($i)
    }

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Я бы изменил объявление вашей функции:

function Dagcontrole_folders_maken ([String]$huidige_folder) {

Это означает, что $huidige_folder объявлен как String. Но главная проблема заключалась в том, что персонаж {помещен не в то место. Он должен быть помещен после аргументов.

Я также предлагаю вам проанализировать все элементы в вашей функции. Вы можете записать свой ForEach в функцию и указать в качестве аргумента массив строк. Таким образом, ваша функция будет работать с одним или несколькими элементами.

function Dagcontrole_folders_maken ([String[]]$huidige_folder) {
ForEach($folder in $huidige_folder) {
...
0 голосов
/ 06 августа 2020

Попробуйте удалить круглые скобки вокруг $ i.

В отличие от большинства языков, Powershell не требует скобок вокруг фактических параметров при вызове функции. Они могут причинить вред.

Кроме того, благодаря Ливену Кеерсмэкерсу, левая фигурная скобка в определении должна быть после определения параметра, а не перед ним.

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