Autohotkey 使用自动热键替换.bat文件中的中间字符串,而不删除文件

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

我需要使用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

我是新来的。啊,我用一些搜索尝试过这个

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代码将无法编译