blejd Posted October 27, 2014 Share Posted October 27, 2014 Hello, it's my first post here, so i would like to greet you all! I tried to search forums for such a thing but couldn't find anything that suit me. I Need to open a file with autoit, modify a text (ill provide a pattern) and swap this text with other then save. For example, i have "text.txt" located in c: drive, i would like to open it, modify line "hello" to "hallo" and save. Any Hints how could i achieve it? Link to comment Share on other sites More sharing options...
JohnOne Posted October 27, 2014 Share Posted October 27, 2014 FileOpen FileReadLine FileWriteLine FileClose All in help file. Also look at Loops. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
blejd Posted October 27, 2014 Author Share Posted October 27, 2014 FileOpen FileReadLine FileWriteLine FileClose All in help file. Also look at Loops. Thanks for it, will it work on server system? I can't modify anything directly on disk (save directly to) So first i have to copy file on desktop, modify, save and copy back to folder on c:) Link to comment Share on other sites More sharing options...
blejd Posted October 27, 2014 Author Share Posted October 27, 2014 Well i can't edit i suppose, here's another problem. How to open .js file in text editor, then search for string and replace it with another? Link to comment Share on other sites More sharing options...
jguinch Posted October 27, 2014 Share Posted October 27, 2014 To copy a file on your desktop folder, just use FileCopy, and FileCopy again to copy back. Why do you want to open the .js file in a text editor ? You don't need to open it in a external tool, you can directly modify it with your script, using the functions that JohnOne suggest. Spoiler Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF Link to comment Share on other sites More sharing options...
MikahS Posted October 27, 2014 Share Posted October 27, 2014 Something like this? expandcollapse popup#include <GuiListView.au3> #include <File.au3> #include <ListViewConstants.au3> #include <GuiEdit.au3> #include <GUIConstants.au3> Local $f_Open, $f_spltStr, $f_Read, $f_Index, _ $f_Array, $a_item GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") $f_Open = FileOpenDialog("Open file", @WorkingDir, "Txt files (*.txt)|JS files (*.js)|All files (*.*)") $f_spltStr = StringSplit($f_Open, "\") $f_Index = $f_spltStr[0] $f_Read = _FileReadToArray($f_Open, $f_Array, $FRTA_ENTIRESPLIT) $hWnd = GUICreate("File ListView", 400, 600) $h_Listview = GUICtrlCreateListView("List", 5, 5, 300, 500, $LVS_EDITLABELS) $h_save_button = GUICtrlCreateButton("Save", 350, 25) GUISetState() For $f_Index = 0 To UBound($f_Array) - 1 Step 1 $a_item = _GUICtrlListView_AddItem($h_Listview, $f_Array[$f_Index]) If $a_item = -1 Then MsgBox(0, "", "error") EndIf Next _GUICtrlListView_SetColumnWidth($h_Listview, 0, $LVSCW_AUTOSIZE) While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $h_save_button saveArray() EndSwitch WEnd Func saveArray() Local $f_s_Array[1000], $i Local $fileOpen = FileOpen($f_Open, 2) For $i = 0 To _GUICtrlListView_GetItemCount($h_ListView) Step 1 $f_s_Array[$i] = _GUICtrlListView_GetItemText($h_Listview, $i) Next For $i = 0 To _GUICtrlListView_GetItemCount($h_Listview) Step 1 FileWriteLine($fileOpen, $f_s_Array[$i]) Next FileClose($fileOpen) EndFunc Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo $hWndListView = $h_ListView If Not IsHWnd($h_ListView) Then $hWndListView = GUICtrlGetHandle($h_ListView) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW ; Start of label editing for an item $tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam) _DebugPrint("$LVN_BEGINLABELEDIT" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @CRLF & _ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->State:" & @TAB & DllStructGetData($tInfo, "State") & @CRLF & _ "-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @CRLF & _ "-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @CRLF & _ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @CRLF & _ "-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @CRLF & _ "-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @CRLF & _ "-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @CRLF & _ "-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns")) Return False ; Allow the user to edit the label ;Return True ; Prevent the user from editing the label Case $LVN_COLUMNCLICK ; A column was clicked $tInfo = DllStructCreate($tagNMLISTVIEW, $lParam) _DebugPrint("$LVN_COLUMNCLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param")) ; No return value Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW ; The end of label editing for an item $tInfo = DllStructCreate($tagNMLVDISPINFO, $lParam) Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text")) _DebugPrint("$LVN_ENDLABELEDIT" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @CRLF & _ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->State:" & @TAB & DllStructGetData($tInfo, "State") & @CRLF & _ "-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @CRLF & _ "-->Text:" & @TAB & DllStructGetData($tBuffer, "Text") & @CRLF & _ "-->TextMax:" & @TAB & DllStructGetData($tInfo, "TextMax") & @CRLF & _ "-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @CRLF & _ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @CRLF & _ "-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @CRLF & _ "-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @CRLF & _ "-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @CRLF & _ "-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns")) ; If Text is not empty, return True to set the item's label to the edited text, return false to reject it ; If Text is empty the return value is ignored If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) _DebugPrint("$NM_CLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags")) ; No return value Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam) _DebugPrint("$NM_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode & @CRLF & _ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @CRLF & _ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @CRLF & _ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @CRLF & _ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @CRLF & _ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @CRLF & _ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @CRLF & _ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @CRLF & _ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @CRLF & _ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags")) ; No return value Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key _DebugPrint("$NM_RETURN" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; No return value Case $NM_SETFOCUS ; The control has received the input focus _DebugPrint("$NM_SETFOCUS" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _ "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _ "-->Code:" & @TAB & $iCode) ; No return value EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func _DebugPrint($s_Text , $sLine = @ScriptLineNumber) ConsoleWrite( _ "!===========================================================" & @CRLF & _ "+======================================================" & @CRLF & _ "-->Line(" & StringFormat("%04d", $sLine) & "):" & @TAB & $s_Text & @CRLF & _ "+======================================================" & @CRLF) EndFunc ;==>_DebugPrint Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Solution blejd Posted October 27, 2014 Author Solution Share Posted October 27, 2014 Well i did it in easy way, i needed to open .js file to modify 1 string. $szFile = "c:tempx.js" $szText = FileRead($szFile,FileGetSize($szFile)) $szText = StringReplace($szText, "a", "b") FileDelete($szFile) that's how it works. and to modify it im just copying oryiginal one to temp folder, doing edits and copy it back with override, then delting temp. Thanks for advices guys, close thread. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now