首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Compare-Object PowerShell输出一个包含2个空行的1KB文件

Compare-Object PowerShell输出一个包含2个空行的1KB文件
EN

Stack Overflow用户
提问于 2019-02-22 05:23:06
回答 1查看 128关注 0票数 0

我有一个PowerShell脚本,它比较昨天和今天的文件,以提供可以进一步加载到Oracle表中以满足报告需要的更改。我的问题是,周末当源系统没有变化时,与昨天的文件相比,今天的文件中没有新行( file1和file2是相同的)。Compare-Object仍然会生成一个只有一个换行符的输出文件。我在这个论坛上搜索可能有类似问题的人,下面是我到目前为止所尝试的。

初始代码:

Compare-Object -ReferenceObject $(Get-Content $filenew) -DifferenceObject $(Get-Content $fileold) |
    Where-Object SideIndicator -eq '<=' |
    %{$_.Inputobject + $_.SideIndicator} |
    ft -Auto |
    Out-File $file_diff -Width 5000

我尝试在代码中添加以下内容,但仍然没有帮助

$filen = Get-Item "D:\DevelopTest\DEV\Test\File2.txt"
$fileo = Get-Item "D:\DevelopTest\DEV\Test\File1.txt"

Compare-Object -ReferenceObject $(Get-Content $filenew) -DifferenceObject $(Get-Content $fileold) |
    Where-Object SideIndicator -eq '<=' |
    %{$_.Inputobject + $_.SideIndicator} |
    ft -Auto |
    Out-File $file_diff -Width 5000

(gc "D:\DevelopTest\DEV\Test\File.txt") |
    ? {$_.Trim() -ne "" } |
    Set-Content $file_diff

我可以添加什么来标识文件没有数据(只有空白/换行符),这样我就可以防止将空行加载到表中。感谢您的帮助,谢谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-02-23 06:13:57

正如@LotPings在上面的回答中指出的那样,compare-object不是额外的换行符的原因,而是它下面的脚本将文件从Little Endian转换为UTF8。在If ((Get-Content $file_diff) -ne $Null)条件下移动编码转换脚本后,原始代码可以正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54816423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档