Powershell 批处理文件以打开txt替换文本保存并关闭

Powershell 批处理文件以打开txt替换文本保存并关闭,powershell,batch-file,text,replace,Powershell,Batch File,Text,Replace,我知道这个社区是为了帮助人们,我不是百分之百地要求别人做一项委托工作或w/e,但我希望有一系列的批处理文件,用于将某些数字更改为每个批处理文件的特定数字 echo off if exist %application.yml del %application.yml for /F "delims=" %%l in (%1) do ( set "line=%%l" set "line=%line:specific text=another word%" echo/%line%

我知道这个社区是为了帮助人们,我不是百分之百地要求别人做一项委托工作或w/e,但我希望有一系列的批处理文件,用于将某些数字更改为每个批处理文件的特定数字

echo off
if exist %application.yml del %application.yml
for /F "delims=" %%l in (%1) do (
    set "line=%%l"
    set "line=%line:specific text=another word%"
    echo/%line%>> %application.yml)'
我该如何设置它来将一组数字替换为设置的数字,对不起,我是个十足的白痴

文件本身
application.yml

product: 
# Cntrl alt 1 Mini, 2 m16, 3 scar, 4 m4169, 5 akm, 6 ump,7 sks
discordUsername: 
discordPassword: 
maxCPUsUsage: 4
shutdownKey: 0x7B
reloadConfigKey: 0x79

screenResolutionX: 1920
screenResolutionY: 1080

playerEsp: true
playerEspColor: 0xFF00FF
playerEspPointSize: 1

radarEsp: true
radarEspColor: 0x0000FF
radarEspPointSize: 2

vehicleEsp: true
vehicleEspColor: 0xff0000
vehicleEspPointSize: 1
vehicleEspHotkey: 0x2D

lootEsp: true
lootEspColor: 0x00FF00
lootAirdropEspColor: 0xffffff
lootEspPointSize: 1
lootEspHotkey: 0x24

redrawTime: 0
reloadDataTime: 2000

aimEnabled: true
aimKey: 0x39
aimFOV: 95
aimFrequency: 6
aimPrecision: 1
aimSpeed: 1
bulletSpeed: 990
aimHitbox: 0

# Key list: https://msdn.microsoft.com/en-us/en-en/library/windows/desktop/dd375731(v=vs.85).aspx
所以本质上,我想替换的数字是子弹速度,它可以是以前更改的多个数字,例如

990
870
400
如果是这些例子中的任何一个,我想用

900
等等等等

因此,它会搜索任何可能的数字,并将其更改为指定的数字,然后以相同的文件名保存文件

提前感谢您的帮助,如果我在示例中完全诚实,我甚至不知道要更改什么,只需将一个数字替换为另一个,更不用说多实例搜索:)

再次请求任何建议或帮助。

以下注释
.bat
脚本应执行此操作,但空行不会复制到输出文件:

@ECHO OFF
SETLOCAL EnableExtensions
rem redirect all output to a brand new file
>application.yml (
  rem parse a file (supplied file name %1 must not be equal to "application.yml")   
  for /F "usebackq delims=" %%l in ("%~1") do (
      rem parse each line
      for /F "tokens=1* delims=:" %%L in ("%%~l") do (
          if /I "%%~L"=="bulletSpeed" (
              rem modified line
              echo(%%L: 900
          ) else (
              rem original line 
              echo(%%l
          )
      )
  )
)
顺便说一句,在原始脚本中,您需要正确引用括号内代码块(如
FOR
循环体)中定义的变量(重新定义),例如:

echo关闭
SETLOCAL EnableExtensions EnableDelayedExpansion
如果存在application.yml del application.yml
对于/F“delims=“%%l in(%1)do(
设置“行=%%l”
设置“行=!行:特定文本=另一个单词!”
echo/!line!>>application.yml
)
资源(必读):

  • (命令参考)
  • (有用的特殊性)
  • %~L
    等特殊页面)
  • (专页)
  • >
    等特殊页面)
以下注释说明了
.bat
脚本应该执行此操作,尽管空行不会复制到输出文件中:

@ECHO OFF
SETLOCAL EnableExtensions
rem redirect all output to a brand new file
>application.yml (
  rem parse a file (supplied file name %1 must not be equal to "application.yml")   
  for /F "usebackq delims=" %%l in ("%~1") do (
      rem parse each line
      for /F "tokens=1* delims=:" %%L in ("%%~l") do (
          if /I "%%~L"=="bulletSpeed" (
              rem modified line
              echo(%%L: 900
          ) else (
              rem original line 
              echo(%%l
          )
      )
  )
)
顺便说一句,在原始脚本中,您需要正确引用括号内代码块(如
FOR
循环体)中定义的变量(重新定义),例如:

echo关闭
SETLOCAL EnableExtensions EnableDelayedExpansion
如果存在application.yml del application.yml
对于/F“delims=“%%l in(%1)do(
设置“行=%%l”
设置“行=!行:特定文本=另一个单词!”
echo/!line!>>application.yml
)
资源(必读):

  • (命令参考)
  • (有用的特殊性)
  • %~L
    等特殊页面)
  • (专页)
  • >
    等特殊页面)

    • 正则表达式是进行此类编辑的理想选择。
      除了findstr有限的功能外,批处理还缺少重新支持

      此包装的powershell one liner将在cmd行或批处理文件中执行此任务

      powershell -NoP -C "(gc application.yml) -Replace '(?<=bulletSpeed: )\d+','900'|sc application.yml"
      

      正则表达式是进行此类编辑的理想选择。
      除了findstr有限的功能外,批处理还缺少重新支持

      此包装的powershell one liner将在cmd行或批处理文件中执行此任务

      powershell -NoP -C "(gc application.yml) -Replace '(?<=bulletSpeed: )\d+','900'|sc application.yml"
      

      本网站不是要求调试程序员的合适场所,但是如果您发布输入文件的样本,
      %1
      ,并显示其精确布局和大小,您可能会幸运地得到一个响应,这样您就不用再调试别人了。顺便说一句,不要将代码和文件信息发布到评论部分,请使用该工具将其添加到您的原始帖子中。我已再次编辑了您的帖子,希望能够正确格式化您新添加的
      .yml
      文件,如果现在错误,请告诉我!您是只想替换该文件中与
      990
      匹配的精确值,还是只想替换仅属于
      bulletSpeed
      或其他内容的匹配值。您太棒了,谢谢您的帮助:)基本上我想制作一些批处理文件来编辑它(bullet speed)或者将任何其他子弹速度指定给特定的批处理文件,以便我可以将它们指定给键盘上的宏键,以便随时更改子弹速度。我可以在基本代码之后做腿部工作(真的:)但是是的,只是子弹的速度。虽然每种子弹速度的数字都应该与该网站内的任何其他内容相关。yml该网站不是要求委托程序员的合适地点,但是如果您要发布输入文件的样本,
      %1
      ,其中包含精确的布局和大小指示,你可能很幸运地得到了一个回复,这样你就不用再委以某人了。顺便说一句,不要将代码和文件信息发布到评论部分,请使用该工具将其添加到您的原始帖子中。我已再次编辑了您的帖子,希望能够正确格式化您新添加的
      .yml
      文件,如果现在错误,请告诉我!您是只想替换该文件中与
      990
      匹配的精确值,还是只想替换仅属于
      bulletSpeed
      或其他内容的匹配值。您太棒了,谢谢您的帮助:)基本上我想制作一些批处理文件来编辑它(bullet speed)或者将任何其他子弹速度指定给特定的批处理文件,以便我可以将它们指定给键盘上的宏键,以便随时更改子弹速度。我可以在基本代码之后做腿部工作(真的:)但是是的,只是子弹的速度。tho每个子弹速度的数字应该与.yml中的任何其他内容相关