Powershell 行情

Powershell Quotes

我正在尝试使用带有输入作为变量的 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

我该怎么做?

除了我的评论之外,您还可以利用 string subexpression 来实现您的目标(注意双引号,因为单引号表示不扩展变量的字符串文字):

$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 运算符的参数数组;useful article):

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

或变量展开:

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

脚注:使用 echoWrite-Output 的别名)是不必要的,因为任何不是 "captured" 的输出(通过使用重定向或变量赋值)都将输出到成功流(即,控制台)。参见 this document about streams and redirection