如何用PowerShell修改游戏XML配置中的InputMapping元素值
问题:用PowerShell修改游戏XML配置中的按键映射值
我想要用PowerShell为游戏设置按键映射,游戏用XML存储配置,需要修改<InputMapping>Service2</InputMapping>元素的数值。
XML内容示例:
<JoystickButtons> <ButtonName>Service 2</ButtonName> <InputMapping>Service2</InputMapping> </JoystickButtons>
目前已编写的脚本:
[xml]$gameInfo = Get-Content $game.fullname $xml = New-Object XML $xml.Load("C:\PATH\$game") $Buttons = $xml.SelectNodes("/JoystickButtons")
请问接下来该如何操作?
解决方案
步骤1:简化XML加载逻辑
你当前的脚本重复加载了XML文件(既用[xml]$gameInfo又用$xml.Load()),保留其中一种方式即可,推荐更简洁的[xml]类型直接加载:
# 替换原有加载代码,二选一即可 [xml]$xml = Get-Content $game.fullname # 或者用New-Object方式: # $xml = New-Object XML # $xml.Load($game.fullname)
步骤2:修改InputMapping的值
通过$Buttons已经获取到<JoystickButtons>节点,直接访问其下的<InputMapping>子节点修改内容:
# 如果只有一个<JoystickButtons>节点,直接赋值 $Buttons.InputMapping = "你的新按键映射值" # 如果存在多个<JoystickButtons>节点,循环遍历并精准修改目标项 foreach ($btn in $Buttons) { # 仅修改ButtonName为"Service 2"的节点 if ($btn.ButtonName -eq "Service 2") { $btn.InputMapping = "你的新按键映射值" } }
步骤3:保存修改后的XML文件
最后将修改后的配置保存回原文件(或指定新路径做备份):
# 保存到原文件 $xml.Save($game.fullname) # 可选:保存到新路径避免覆盖原文件 # $xml.Save("C:\PATH\modified_game_config.xml")
完整示例脚本
整合后的完整可运行脚本:
# 加载XML配置文件 [xml]$xml = Get-Content $game.fullname # 获取所有JoystickButtons节点 $Buttons = $xml.SelectNodes("/JoystickButtons") # 遍历修改目标节点 foreach ($btn in $Buttons) { if ($btn.ButtonName -eq "Service 2") { $btn.InputMapping = "NewServiceMapping" # 替换为你需要的新值 } } # 保存修改 $xml.Save($game.fullname)
内容的提问来源于stack exchange,提问作者Blake
相关产品推荐
相关产品推荐

