执行Get-ChildItem时将文本添加到文件

时间:2017-12-07 00:32:36

标签: powershell get-childitem

我一直在寻找解决这个问题但到目前为止没有任何工作。 我想要选择1个/多个文件,将硬编码值(例如"DIAB`r`n")添加到文件内容的开头,然后写入另一个卷。 我是否必须做多个陈述,或者我可以在一个陈述中做些什么。 到目前为止,我尝试使用2个语句:

# Find the file/s .HL7, move to a new destination and change the filename to add "DIAB-"
# to the front - this is working
Get-ChildItem -Path $DiabetesPath |
    Where-Object { (!$_.PSIsContainer -and $_.Name -like "*.HL7") } |
    Move-Item -Destination $DestinationPath -PassThru |
    Rename-Item -NewName {"DIAB-" + $_.Name}

# this is what is not working - after files moved to destination trying to add some text
# to the start of the file content
Get-ChildItem $DestinationPath -Recurse -Filter DIAB*.HL7 | ForEach-Object
{
    $content = Get-Content $_.FullName 
    Set-Content $_.FullName -Value "DIAB`r`n", $content 
}

当我尝试时,它说:

cmdlet ForEach-Object at command pipeline position 2
Supply values for the following parameters
process[0]:

当我输入内容时,它会继续:

process[1]:
process[2]:
...

不确定发生了什么。

1 个答案:

答案 0 :(得分:0)

哇!没有意识到{的位置会影响任何事情。

移动了{旁边的ForEach-Object,然后就可以了。

Get-ChildItem $DestinationPath -Recurse -Filter DIAB*.HL7 | ForEach-Object {
    $content = Get-Content $_.FullName 
    Set-Content $_.FullName -Value "DIAB`r`n", $content 
}