Autohotkey 使用自动热键替换.bat文件中的中间字符串,而不删除文件
我需要使用ahk脚本编辑standalone.bat文件。我想使用ahk增加我的堆大小,所以下面是我必须在bat文件中更改堆的行。现在,我尝试使用StringReplace和FileAppend编辑此文件,但FileAppend一直在将字符串追加到末尾 从 设置“JAVA_OPTS=-Dprogram.name=%PROGNAME%-Xms64M-Xmx1426M%JAVA_OPTS%” 到 设置“JAVA_OPTS=-Dprogram.name=%PROGNAME%-Xms64M-Xmx1426M%JAVA_OPTS%”“xms000M 我是新来的。啊,我用一些搜索尝试过这个Autohotkey 使用自动热键替换.bat文件中的中间字符串,而不删除文件,autohotkey,Autohotkey,我需要使用ahk脚本编辑standalone.bat文件。我想使用ahk增加我的堆大小,所以下面是我必须在bat文件中更改堆的行。现在,我尝试使用StringReplace和FileAppend编辑此文件,但FileAppend一直在将字符串追加到末尾 从 设置“JAVA_OPTS=-Dprogram.name=%PROGNAME%-Xms64M-Xmx1426M%JAVA_OPTS%” 到 设置“JAVA_OPTS=-Dprogram.name=%PROGNAME%-Xms64M-Xmx142
Loop, read, C:\standalone.bat
{
Line = %A_LoopReadLine%
replaceto = xms000M
IfInString, Line, Xmx1426M
, Line, replaceto, %Line%, %replaceto%
FileAppend, %replaceto%`n
StringReplace FileAppend
}
是否可以使用ahk替换中间字符串。谢谢Fileappend将始终附加到文件的末尾。为什么要阻止临时删除批处理文件 通常,在ahk中,你会这样做
batFile = C:\standalone.bat
output := ""
Loop, read, %batFile%
{
Line = %A_LoopReadLine%
IfInString, Line, Xmx1426M
{
StringReplace, Line, Line, Xmx1426M, xms000M
; note: Regular Expressions can be used like Line := regExReplace(Line, "...", "...")
}
output .= Line . "`n" ; note: this is the same as if to say output = %output%%Line%`n or output := output . line "`n"
}
FileDelete, %batFile%
FileAppend, %output%, %batFile%
这将删除您的文件几毫秒,只是为了在以后用新内容重新创建它。我看不出在不删除的情况下编辑它有什么区别,因为无论哪种方式,您都需要对该文件的写访问权限
关于您的代码示例:
IfInString, Line, Xmx1426M
, Line, replaceto, %Line%, %replaceto%
将被解释为
如果字符串“Line”包含“Xmx1426M,Line,replaceto,%Line%,%replaceto%”
这没什么意义
FileAppend,%replaceto%\n
缺少目标文件
StringReplace FileAppend
:这是两个没有任何其他参数的命令。切勿将两个非功能命令放在同一行中 您发布的ahk代码将无法编译