我正在尝试使用带有输入的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"
脚注:使用echo
(Write-Output
的别名)是不必要的,因为任何未“捕获”的输出(通过使用重定向或变量赋值)都将输出到成功流(即控制台)。见this document about streams and redirection。