虽然这看起来可能很简单(也许确实如此!),但我似乎找不到解决方法。
我的目标是比较两个经过筛选的文件列表的内容。一个例子是,如果有两个列表返回表示在Stuff\files\morefiles位置下都有一个名为file.config的项目,则会将这些文件进行比较,并输出更改的位置和内容。本质上,对.config文件进行差异比较,并显示其更改的位置。正常情况下,比较两个文件很简单(可以使用Compare-Object等命令),但由于它是两个文件列表,而不是单个的文件,因此我已经失去了方向。
我需要这样做是为了显示升级软件所需的所有配置文件更改列表,因此从软件的一个版本到另一个版本,哪些更改应用于配置文件。我正在使用PowerShell进行操作,因为可以轻松与HG Mercurial进行交互,并且可以由不太有经验的用户(通过批处理文件)运行。
目标是生成一个列出新安装中更改的所有文件的文本文件或类似文件。
以下是我的进展:
想法还是解决方案?
我的目标是比较两个经过筛选的文件列表的内容。一个例子是,如果有两个列表返回表示在Stuff\files\morefiles位置下都有一个名为file.config的项目,则会将这些文件进行比较,并输出更改的位置和内容。本质上,对.config文件进行差异比较,并显示其更改的位置。正常情况下,比较两个文件很简单(可以使用Compare-Object等命令),但由于它是两个文件列表,而不是单个的文件,因此我已经失去了方向。
我需要这样做是为了显示升级软件所需的所有配置文件更改列表,因此从软件的一个版本到另一个版本,哪些更改应用于配置文件。我正在使用PowerShell进行操作,因为可以轻松与HG Mercurial进行交互,并且可以由不太有经验的用户(通过批处理文件)运行。
目标是生成一个列出新安装中更改的所有文件的文本文件或类似文件。
以下是我的进展:
$A = Get-ChildItem -Recurse -path "C:\repos\Dev\Projects\Bat\CurrentVersionRepoCloneTemp" -filter "*.config"
$B = Get-ChildItem -Recurse -path "C:\repos\Dev\Projects\Bat\UpgradeVersionRepoCloneTemp" -filter "*.config"
$C = Compare-Object $A $B -Property ('Name', 'Length') -PassThru | Where-Object {$_.FullName -eq $_.FullName} | ForEach-Object
{
Compare-Object (Get-Content FileA)(Get-Content FileB) #I know this doesn't work
}$C
想法还是解决方案?