用于更新visual studio.vsxproj文件的PowerShell脚本

用于更新visual studio.vsxproj文件的PowerShell脚本,powershell,replace,Powershell,Replace,我有个小问题。我想搜索一个目录,比如说D:\。我想找到扩展名为.vsxproj的文件。然后我可以做两件事。 1.访问名为“项目属性”的节点,并在字符串中更改单个单词。 2.或者,只替换整个文件中的单词,而不搜索特定节点。这比较容易,也符合我的目的。 现在是实际代码。我试过以下方法 (Get-Content D:\data123.xml) | Foreach-Object {$_ -replace "Wow32", "Wow3232" } | Set-Content D:

我有个小问题。我想搜索一个目录,比如说D:\。我想找到扩展名为.vsxproj的文件。然后我可以做两件事。 1.访问名为“项目属性”的节点,并在字符串中更改单个单词。 2.或者,只替换整个文件中的单词,而不搜索特定节点。这比较容易,也符合我的目的。 现在是实际代码。我试过以下方法

    (Get-Content D:\data123.xml) | 
    Foreach-Object {$_ -replace "Wow32", "Wow3232" } |
    Set-Content D:\data123.xml
如果我知道文件名,这适用于单个文件。但我有100多个文件。所以我尝试了类似的方法。我转到我的D驱动器并执行以下操作:

    $configFiles = Get-ChildItem . *.vsxproj -rec
    foreach ($file in $configFiles)
    {
    (Get-Content $file.PSPath) |
    Foreach-Object {$_ -replace "Wow32", "Wow3232" } |
    Set-Content $file.PSPath
    }

请让我知道如何在几个文件上递归并更改这个单词。我已经搜索并查看了很多答案,但没有一个能真正解决我的问题。请提供帮助。

执行此处的代码时会发生什么情况?第一个代码有效。但我需要所有文件的名称,并手动更改。第二个显然什么也没做。虽然我没有错误@你的第二个例子对我很有用。你确定
Get ChildItem
返回任何文件吗?我有文件。那为什么不返回呢??我在这里有点困惑!!我发现它可以与.xml扩展名一起工作,但在文件为.vsxproj时失败。有什么想法吗??抱歉,正确的扩展名是.vcxproj。代码工作:)当您执行这里的代码时会发生什么?第一个工作。但我需要所有文件的名称,并手动更改。第二个显然什么也没做。虽然我没有错误@你的第二个例子对我很有用。你确定
Get ChildItem
返回任何文件吗?我有文件。那为什么不返回呢??我在这里有点困惑!!我发现它可以与.xml扩展名一起工作,但在文件为.vsxproj时失败。有什么想法吗??抱歉,正确的扩展名是.vcxproj。代码有效:)