Powershell添加内容不会添加到文件末尾

时间:2018-08-02 09:32:27

标签: powershell

我需要先将一个标头添加到一个csv文件中,然后再将其导入数据库。由于某些原因,添加了标头,但其余csv数据未添加在换行符上,而是紧随其后。

$file = Get-ChildItem \\some path to the datafile\IDM_dump | sort LastWriteTime | select -last 1
Copy-Item $file.FullName "D:\Program Files (x86)\Indocs\DatabaseImport\IDMdump.csv"

#Make copy of header info file because file will be renamed
Copy-Item 'D:\Program Files (x86)\Indocs\DatabaseImport\IDMheaderinfo.csv' 'D:\Program Files (x86)\Indocs\DatabaseImport\headerinfo.csv'

#Add header data at the first line of the data file
$valueDumpFile = Get-Content "D:\Program Files (x86)\Indocs\DatabaseImport\IDMdump.csv"

#Add-Content -Path 'D:\Program Files (x86)\Indocs\DatabaseImport\headerinfo.csv' -Value $valueDumpFile
Out-File -FilePath 'D:\Program Files (x86)\Indocs\DatabaseImport\headerinfo.csv' -InputObject $valueDumpFile -Append -NoClobber

#Rename file to new name
Rename-Item -Path 'D:\Program Files (x86)\Indocs\DatabaseImport\headerinfo.csv' -NewName IDMDumpWithHeader.csv

2 个答案:

答案 0 :(得分:1)

由于您不在Powershell中使用数据,因此我只将csv文件视为纯文本,然后使用Get-Content来加入文件:

Get-Content $file1,$file2 | Set-Content $output_file

您指定文件的顺序就是它们的加入顺序。

您不需要文件的任何副本或重命名,只需将文件加入并输出一次到所需的名称文件即可:

$headers = 'D:\Program Files (x86)\Indocs\DatabaseImport\IDMheaderinfo.csv'
$output = 'D:\Program Files (x86)\Indocs\DatabaseImport\IDMDumpWithHeader.csv'

$file = Get-ChildItem \\server\IDM_dump | sort LastWriteTime | select -last 1

Get-Content $headers,$file.fullname | Set-Content $output

答案 1 :(得分:1)

如果您仍然想使用Get-Content,请检查@James C.answer。在此答案中,我建议使用另一种方法,如果您需要修改脚本中的数据,而不仅仅是加入文件,则可能会更有用


使用与CSV相关的cmdlet会更容易吗?

$object = Import-CSV .\data.csv -Header ((Get-Content .\headers.csv) -split ",")

假设文件内容如下:

headers.csv

firstname,lastname,id

data.csv

john,doe,2
john,smith,1

结果将是对象:

PS C:\SO\51650194> $object = Import-CSV .\data.csv -Header ((Get-Content .\headers.csv) -split ",")
PS C:\SO\51650194> $object

firstname lastname id
--------- -------- --
john      doe      2
john      smith    1

然后您可以使用.csv轻松将其导出到Export-CSV