我有这个脚本将文件名存储到文本文件中:
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"
是否可以按照我需要的方式将字符串连接到文件名?
答案 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以及它们如何处理管道输入。