2015-06-17 51 views
0

我有一個要求,可能將文件作爲腳本的一部分進行動態補丁。本地PowerShell相當於UNIX差異和補丁

爲了使想什麼腳本正在做更易讀我在類似於UNIX的「差異」和「補丁」的方式的方式來實現這一點。在標準UNIX系統上,diff可以生成一個特殊格式的文本文件,它表示兩個文件之間的差異。這可能會被「修補程序」連同要修改的文件一起使用,以便以乾淨和直接的方式生成已更改的文件。

看來在PowerShell中沒有直接的方法來做到這一點。我見過的選項是使用多行正則表達式 - 這是很難構建和解釋,消耗整個文件並逐行處理它或編碼我想在腳本中的新文件作爲Base64字符串和只需將其解碼爲目標文件。

雖然比較-對象看起來好像可以做一些事來生成似乎是使用比較-對象的輸出的變化應用到字符串數組沒有簡單的方法適當的DIFF對象。

+0

diff實用程序被稱爲'fc',也許你可以使用那個。這也有助於你的差異是二進制的,這樣你可以調用'fc/b'來比較有問題的文件。 – Vesper

+0

Fc.exe是一個有用的提示 - 但它不能解決將輸出(補丁)應用於原始文件以創建新文件的關鍵問題。 – user1383092

+0

比較對象將是這個明顯的開始。您可以做的最好的事情是顯示一些示例數據文件(幾行)以及生成的文件應該是什麼樣子。 Unix不是我的強項,但我知道如果你展示一些樣本,我可以提供幫助。 – Matt

回答

1

Compare-Object是與diff最接近的東西,並且沒有等同於PowerShell內置的patch。如果您需要該功能,我建議使用Windows端口diffpatch