Котировки Powershell - PullRequest
       6

Котировки Powershell

0 голосов
/ 30 августа 2018

Я пытаюсь поиграть с отображением определенного пути к файлу, используя CSV-файл с вводом для использования в качестве переменной.

Пока у меня есть что-то простое, как это,

$input = Import-Csv 'C:\Folder\file.csv' -Header "User"
echo 'C:\Users\User\Desktop\folder\'$input.User'.txt'

Выход

C:C:\Users\User\Desktop\folder\
Tom
.txt

Мой желаемый результат:

C:\Users\User\Desktop\folder\Tom.txt

Как бы я сделал что-то подобное?

1 Ответ

0 голосов
/ 30 августа 2018

В дополнение к моему комментарию вы можете использовать строковое подвыражение для достижения вашей цели (обратите внимание, что двойные кавычки в виде одинарных кавычек указывают на строковый литерал, который не расширяет переменные):

$csv = Import-Csv -Path C:\Folder\file.csv -Header User

foreach ($row in $csv)
{
    "C:\Users\User\Desktop\folder\$($row.User).txt"
}

Или конкатенация строк:

'C:\Users\User\Desktop\folder\' + $row.User + '.txt'

Или форматировщик строки (этот метод принимает массив аргументов для оператора -f; полезная статья ):

'C:\Users\User\Desktop\folder\{0}.txt' -f $row.User

Или расширение переменной:

$user = $row.User
"C:\Users\User\Desktop\folder\$user.txt"

сноска: использование echo (псевдоним для Write-Output) не является необходимым, поскольку любой не "захваченный" вывод (с помощью перенаправления или назначения переменной) будет выводиться в поток успеха (т. Е. На консоль). См. этот документ о потоках и перенаправлении .

...