我需要使用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
我是.ahk的新手,我使用了一些搜索尝试了这个
Loop, read, C:\standalone.bat
{
Line = %A_LoopReadLine%
replaceto = xms000M
IfInString, Line, Xmx1426M
, Line, replaceto, %Line%, %replaceto%
FileAppend, %replaceto%`n
StringReplace FileAppend
}
是否可以使用ahk替换中间字符串。感谢
答案 0 :(得分:0)
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
:这两个命令没有任何其他参数。你绝不能把两个非函数命令放在同一行!