любая идея/предложение, как упростить этот код? Я хотел бы найти другой подход к созданию папок, поскольку они должны быть созданы.автоматическое создание структуры папок с условиями
function TargetDir { # create folder structure for patches by OS type
if ($col6 -like "*WindowsXP*" -or $col4 -like "*Windows XP*"
) {$TargetDir = "$Path\$col1\XP"
if (!(Test-Path -path $TargetDir
)) {New-Item $Path\$col1\XP -type directory
New-Item -type file -Name $Col6 -Path $TargetDir}
else {New-Item -type file -Name $Col6 -Path $TargetDir}
}
elseif ($col6 -like "*Windows6.0*" -or $col4 -like "*Vista*"
) {$TargetDir = "$Path\$col1\Vista"
if (!(Test-Path -path $TargetDir
)) {New-Item $Path\$col1\Vista -type directory
New-Item -type file -Name $Col6 -Path $TargetDir}
else {New-Item -type file -Name $Col6 -Path $TargetDir}
}
elseif ($col6 -like "*Windows6.1*" -or $col4 -like "*Windows 7*"
) {$TargetDir = "$Path\$col1\Win7"
if (!(Test-Path -path $TargetDir
)) {New-Item $Path\$col1\Win7 -type directory
New-Item -type file -Name $Col6 -Path $TargetDir}
else {New-Item -type file -Name $Col6 -Path $TargetDir}
}
elseif ($col6 -like "*Windows8-RT*" -or $col4 -like "*Windows 8 *"
) {$TargetDir = "$Path\$col1\Win8"
if (!(Test-Path -path $TargetDir)
) {New-Item $Path\$col1\Win8 -type directory
New-Item -type file -Name $Col6 -Path $TargetDir}
else {New-Item -type file -Name $Col6 -Path $TargetDir}
}
elseif ($col6 -like "*Windows8.1*" -or $col4 -like "*Windows 8.1*"
) {$TargetDir = "$Path\$col1\Win81"
if (! (Test-Path -path $TargetDir)
) {New-Item $Path\$col1\Win81 -type directory
New-Item -type file -Name $Col6 -Path $TargetDir}
else {New-Item -type file -Name $Col6 -Path $TargetDir}
}
} # end if
Благодарим за предложение, как это можно упростить.
Для начала я бы использовал оператор switch. '$ col #' не определен в этой функции, так что это не должно работать как – Matt
, это работает, поверьте мне. $ col определяется в другом месте. Я попробую переключатель. –
Хорошо ... если он работает, то область нечетна, но хорошей практикой является использование локальной области, когда это возможно. Нет причин для вас не передавать несколько переменных функции, что делает ее разумной и более переносимой, если вы используете ее где-то в другом месте. Я не вижу, где много этих переменных заполняются как '$ TargetDir' и' $ Path'. Буква должна быть $ null, глядя на это. Если вы закроете и снова откроете PowerShell, он по-прежнему работает? – Matt