使用字符串连接文件名列表

时间:2016-03-24 19:22:01

标签: shell powershell

我有这个脚本将文件名存储到文本文件中:

Get-ChildItem -Path "C:\Users\MyUser\Documents\Files" -Name |
  Out-File "C:\Users\MyUser\Documents\Files\FileList.txt"

结果是:

file1.txt
file2.txt
file3.txt
file4.txt

我希望它能在文本文件中生成PowerShell语句列表,以便我可以在以后使用它们:

Add-Content -Path "C:\Users\MyUser\Documents\Files\file1.txt" -Value "foo"
Add-Content -Path "C:\Users\MyUser\Documents\Files\file2.txt" -Value "foo"
Add-Content -Path "C:\Users\MyUser\Documents\Files\file3.txt" -Value "foo"
Add-Content -Path "C:\Users\MyUser\Documents\Files\file4.txt" -Value "foo"

是否可以按照我需要的方式将字符串连接到文件名?

2 个答案:

答案 0 :(得分:1)

我也不确定我是否正确理解了你的问题,但也许这就是你要找的东西:

Get-ChildItem -Path "C:\Users\MyUser\Documents\Files" | 
    % {
        "Add-Content -Path `"{0}`" -Value `"foo`"" -f $_.FullName
    } | Out-File "C:\Users\MyUser\Documents\Files\FileList.txt"

答案 1 :(得分:0)

我对你要问的内容有点不确定,但是如果我说得对,你想得到一个文件列表,在文件的末尾添加一行,并将文件的名称放在文本中文件。

Get-ChildItem -Path "C:\Users\MyUser\Documents\Files" | 
    ForEach-Object {
        $_ | Add-Content -Value "foo"
        $_.Name
    } | Out-File "C:\Users\MyUser\Documents\Files\FileList.txt"

这是一种可能的方式。它将每个项目传递给ForEach-Object,其中将值添加到文件中,并将文件名发送到管道。它被传送到编写列表的Out-File

有很多方法可以实现这一目标;最好学习和使用流水线操作,然后查看各种cmdlet以及它们如何处理管道输入。