我正在尝试使用Autohotkey找到一种清空文本文件的方法。不幸的是,我无法找到任何允许你这样做的功能。我能想出的最佳解决方案是:
FileRead, TheText, file.txt
StringReplace, NewText, TheText, 'text to search for', 'replacement text', All
FileDelete, file.txt
FileAppend, %NewText%, file.txt
但是,此解决方案对我不起作用,因为我正在编写一个工具,可以添加或删除Windows主机文件中的内容。删除主机文件是不可能的。
所以我将主机文件内容加载到变量中,用我的程序用空字符串(恢复原始主机文件内容)替换任何添加内容,并将其写回hosts文件。但为了做到这一点,我需要先清空文件,否则只需将变量附加到现有内容。
对于那些对我的计划感到好奇的人:
该程序将启用/禁用outlook.com或hotmail.com上的自动Skype登录功能。当然没有注意邮件功能或Skype客户端的任何问题。
答案 0 :(得分:1)
以下是使用文件对象(req ahk 1.1+)
的方法将这个示例放在一个新的脚本文件中并运行它以查看它是如何工作的
/* String1
* String2
* String3
* String4
* String5
* String6
* String7
* String8
* String10
*/
msgbox % CutString(A_ScriptFullPath, "String7")
CutString(filePath, Needle)
{
fileObj := FileOpen(filePath, "rw"), pointerPos := fileObj.Pos, RegExMatch(fileObj.read(), "O)" needle, match)
fileObj.Seek(0), newText .= fileObj.read(match.pos-1), fileObj.Seek(match.pos + match.Len), newText .= fileObj.read()
fileObj.Seek(pointerPos), fileObj.Write(newText), fileObj.length := StrLen(newText), fileObj.Close()
return match.value
}
此功能使用RegEx查找"针"的位置和大小。文件中的字符串,然后在没有它的情况下重写和调整文件内容的大小。
您还可以重写该功能,只需从文件中剪切线条。
我希望这能满足您的需求
答案 1 :(得分:1)
如何重命名呢?我以前做过这个。
hosts := "c:\windows\system32\etc\hosts"
fileread, hostsText, %hosts%
stringreplace, newText, %hostsText%, %searchtext%, %replacementtext%, all
fileappend, %hostsText%, %hosts%.bak ;make backup
filedelete, %hosts%.temp ;delete the temp file if it exists
fileappend, %newtext%, %hosts%.temp ;write new text to a blank file
filemove, %hosts%.temp, %hosts%, 1 ;rename the new file to hosts - set flag to 1 to overwrite
然后你需要刷新DNS,没有?
Run cmd /c ipconfig /flushdns
答案 2 :(得分:0)
请遵循以下步骤: