В качестве обходного пути вы можете сделать следующее:
$test = $test -replace ',[^,]*$'
Однако я бы исследовал причину проблемы root, так как может возникнуть ряд проблем (или не возникших проблем) с вашими данными. Ниже показано, как это может произойти, если ваш последний элемент $folder
содержит запятую:
# Example 1
# The $folder final element contains a comma in its string
# The -join does not add the comma because it is part of the string already
$folder = 'one','two','three','four,'
$path = 'c:\temp'
$test = foreach ($file in $folder) {
Join-Path -Path $path -ChildPath $file
}
$test -join ','
#output
c:\temp\one,c:\temp\two,c:\temp\three,c:\temp\four,
В приведенном выше примере мы должны иметь возможность посмотреть на последний элемент ([-1]
) из $test
и найдите запятую:
$test[-1]
#output
c:\temp\four,
См. Ниже, если $test
манипулируют, чтобы добавить пустой (или $null
) элемент в конце этого:
# Example 2
# $test gets a space added as the final element
$folder = 'one','two','three','four'
$path = 'c:\temp'
$test = foreach ($file in $folder) {
Join-Path -Path $path -ChildPath $file
}
$test += ' '
$test -join ','
#output
c:\temp\one,c:\temp\two,c:\temp\three,c:\temp\four,
Последний элемент $test
здесь будет пустой строкой:
PS > $test[-1]
PS >
Редактировать на основе комментариев:
Вы можете используйте оператор форматирования -f
для форматирования каждой строки запроса. Затем используйте оператор -join
, чтобы объединить все ваши строковые элементы.
$query = ForEach ($file in $test) {
$sqlquery = Join-Path -Path $path -ChildPath $file
"file='{0}'" -f $sqlquery
}
$query -join ",`n"