首页 > 解决方案 > 使用 Powershell 将文件名和文件内容的值分配给模板

问题描述

在我的目录路径\中,我有许多名称如下的文本文件

area1.txt
area2.txt
area3.txt

每个文件都包含许多看起来像这样的衬线字符串

user1
user2
user3

如何编写 Powershell 脚本以将文件的所有文件名和内容传递给模板,以便每次迭代或将所有结果组合成单个文件时看起来像这样。

area "filename"
user "user1"
realname "user1"

设法编写了一个脚本,但它没有产生预期的结果。不知何故,它只在用户和实名模板之后产生循环中文件名的最后一个值和空字符串。

foreach($file in Get-ChildItem path\ -Filter *.txt){
$result = @"
area $($file.BaseName)
area {0} 
realname {0} 
"@
}

foreach($file in Get-ChildItem path\ -Filter *.txt){
    foreach ($line in $file |Get-Content){
        $result -f $_
    }
  }

需要您的帮助来指出我脚本中的错误并帮助我修复它。如果有人能提供帮助,我真的很感激。

标签: windowspowershell

解决方案


为此,您只需要一组(嵌套)循环,然后在内部循环中适当地引用$line和引用:$file

foreach($file in Get-ChildItem path\ -Filter *.txt){
    foreach ($line in $file |Get-Content){
        @"
area {1}
user {0} 
realname {0}
"@ -f $line,$file.BaseName
    }
}

推荐阅读