Dear Friends i am very new to this forum (beginner)
i have two seperate text files text1.txt and text2.txt .
text1.txt contains a list of urls without path and file names (ie. http://11.22.33.44/)
and text2.txt contains some online path to files ( ie. /path1/path2/filename.exe)
i want to combine these two files through loop command
so i can put one by one urls and path+file names to gether so i can make my download list.
any help would be appreciated
How to combine text of two seperate files in a new file
Re: How to combine text of two seperate files in a new file
example , select 2 text files and writes content in NewText.txt
( File1-Line1=File2-Line1 ... )
( File1-Line1=File2-Line1 ... )
Code: Select all
;- select 2 text-files
FileSelectFile, Path1, 3,, Choose first text file:,Supported Files (*.txt;*.log)
If Path1 =
ExitApp
FileSelectFile, Path2, 3,, Choose second text file:,Supported Files (*.txt;*.log)
If Path2 =
ExitApp
;---------------------
Loop
{
a=
b=
FileReadLine, A, %Path1%, %A_Index%
FileReadLine, B, %Path2%, %A_Index%
If ErrorLevel != 0
break
if (a!="" and b!="") ;- if A is not empty AND B is not empty
e .= a . "=" . b . "`r`n" ;- e collects A = B ( = is separator `r`n is EndOfLine )
}
if e<> ;- if e is not empty
{
f2=%a_scriptdir%\NewText.txt
ifexist,%f2%
filedelete,%f2%
fileappend,%e%,%f2% ;- write to new file
e=
run,%f2%
}
exitapp
Last edited by garry on 26 Dec 2016, 14:41, edited 2 times in total.
Re: How to combine text of two seperate files in a new file
Dear Garry thanks fo the anwer you did the job bro!
may you please have some comments for each line?
may you please have some comments for each line?
Re: How to combine text of two seperate files in a new file
Classic programming problem!
Hopefully my script is pretty self-explanatory.
Hopefully my script is pretty self-explanatory.
Code: Select all
vPath1 = %A_Desktop%\z my file 1.txt
vPath2 = %A_Desktop%\z my file 2.txt
FileRead, vText1, % vPath1
FileRead, vText2, % vPath2
vOutput := ""
VarSetCapacity(vOutput, StrLen(vText1)*2+StrLen(vText2)*2)
vIsV1 := !!SubStr(1,0)
if (SubStr(vText1, vIsV1-2) = "`r`n")
vText1 := SubStr(vText1, 1, -2)
if (SubStr(vText2, vIsV1-2) = "`r`n")
vText2 := SubStr(vText2, 1, -2)
vText1 := StrReplace(vText1, "`r`n", "`n")
vText2 := StrReplace(vText2, "`r`n", "`n")
oArray1 := StrSplit(vText1, "`n")
oArray2 := StrSplit(vText2, "`n")
vMax1 := oArray1.MaxIndex()
vMax2 := oArray2.MaxIndex()
if !(vMax1 = vMax2)
MsgBox % "warning: mismatch in number of items:`r`n" vMax1 "`r`n" vMax2
vDelim := "="
vMax := vMax1 > vMax2 ? vMax1 : vMax2
Loop, % vMax
vOutput .= oArray1[A_Index] vDelim oArray2[A_Index] "`r`n"
vPath = %A_Desktop%\z my files combined %A_Now%.txt
FileAppend, % vOutput, % "*" vPath, UTF-8
;FileAppend, % vOutput, % "*" vPath ;for ANSI
MsgBox, % "done"
return
Last edited by jeeswg on 11 Jun 2017, 19:14, edited 1 time in total.
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: How to combine text of two seperate files in a new file
Dear Jeeswg thanks man i tested your code and it works like a charm.
i use the following code to extract file path (my second text file i mentioned above)
there is an extra word attached to the first of file path when the script does the job(ie. file=/path1/path2/file.exe ) here i want my script to delete " file=/"
i should say that my desired strings are started with "file=/" but i want it to be omited in my destination text file.
here is the code
Loop, read, %A_WorkingDir%\%destinationsavepath%\text.txt, %A_WorkingDir%\text2.txt
{
IfInString, A_LoopReadLine, file= , FileAppend, %A_LoopReadLine%`n
}
text.txt is my source file for extracting online path
appreciate your help again
i use the following code to extract file path (my second text file i mentioned above)
there is an extra word attached to the first of file path when the script does the job(ie. file=/path1/path2/file.exe ) here i want my script to delete " file=/"
i should say that my desired strings are started with "file=/" but i want it to be omited in my destination text file.
here is the code
Loop, read, %A_WorkingDir%\%destinationsavepath%\text.txt, %A_WorkingDir%\text2.txt
{
IfInString, A_LoopReadLine, file= , FileAppend, %A_LoopReadLine%`n
}
text.txt is my source file for extracting online path
appreciate your help again
Re: How to combine text of two seperate files in a new file
remove file=/
Code: Select all
F1=%a_scriptdir%\text.txt
x=file=/
fileread,a,%f1%
stringreplace,b,a,%x%,,all
msgbox,%b%
return
Re: How to combine text of two seperate files in a new file
Dear Garry You are amazing thank you
Re: How to combine text of two seperate files in a new file
@jeeswg , you have an optimal script ( varsetcapacity / array etc ... ) , I just made some small modification to my basic script above ( added also comments )
Re: How to combine text of two seperate files in a new file
@taghi_ar, cheers, I haven't really shared much code before the last few days, nice to get some good feedback!
@garry, yeah I know over time I've learnt some useful tidbits, but if someone can catch me out on anything that can be further improved I would like that!
FileReadLine was always said to be deprecated
StrSplit variable next best (which creates a tonne of variables)
and StrSplit array even better I believe (anyhow it only uses 1 object and not loads of vars)
(I did write a script that repeatedly used InStr to find the next line in each var)
VarSetCapacity, gives the var room for all the text before you begin,
or it has to keep shuffling the data about to a new location, as the var gets full
best way to truncate string - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=5&t=26016
FileAppend with * stops some CR/LF checking,
manual:
'End of line (EOL) translation: To disable EOL translation, prepend an asterisk to the filename.
...
However, specifying the asterisk when Text contains `r`n improves performance because the program does not need to scan Text for `r`n.'
@garry, yeah I know over time I've learnt some useful tidbits, but if someone can catch me out on anything that can be further improved I would like that!
FileReadLine was always said to be deprecated
StrSplit variable next best (which creates a tonne of variables)
and StrSplit array even better I believe (anyhow it only uses 1 object and not loads of vars)
(I did write a script that repeatedly used InStr to find the next line in each var)
VarSetCapacity, gives the var room for all the text before you begin,
or it has to keep shuffling the data about to a new location, as the var gets full
best way to truncate string - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=5&t=26016
FileAppend with * stops some CR/LF checking,
manual:
'End of line (EOL) translation: To disable EOL translation, prepend an asterisk to the filename.
...
However, specifying the asterisk when Text contains `r`n improves performance because the program does not need to scan Text for `r`n.'
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: How to combine text of two seperate files in a new file
@jeeswg , thank you , I'll have to learn from your script and also better read the autohotkey help
Re: How to combine text of two seperate files in a new file
i got a question
in a text file how can i delete two phrases embraced by three symbols( ie. /Phrase/phrase/ ) slash / is the symbol
in all over the text
i found a solution in notepad++ but i want to do it by ahk script
any help would be appreciated
in a text file how can i delete two phrases embraced by three symbols( ie. /Phrase/phrase/ ) slash / is the symbol
in all over the text
i found a solution in notepad++ but i want to do it by ahk script
any help would be appreciated
Re: How to combine text of two seperate files in a new file
If there is only one instance of the '/text/text/' issue per line, I might use a parse loop, InStr and SubStr.
There may be a RegExReplace technique, but I only use RegEx rarely.
It might be of interest to explain how you do it in Notepad++,
it might enable other people here to help you better.
There may be a RegExReplace technique, but I only use RegEx rarely.
It might be of interest to explain how you do it in Notepad++,
it might enable other people here to help you better.
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: How to combine text of two seperate files in a new file
Dear Jeeswg inorder to replace '/text/text/' with blank space or simply search and remove it i use Ctrl+h and put "\/.*?/.*?/" string without Quotes"" in find what field .
it does the job fast
could you please tell me how to do it in ahk? i am very weak in loops
it does the job fast
could you please tell me how to do it in ahk? i am very weak in loops
Re: How to combine text of two seperate files in a new file
by the way my text file is filled with that pattern which i want to remove and in each line there is one instance and words between slashes are not the same .
Re: How to combine text of two seperate files in a new file
Start with this: see how you go, and ask if you have problems. I'm going to be AFK.
By the way, RegExReplace might be able to do this in one line, if you check that in the manual.
By the way, RegExReplace might be able to do this in one line, if you check that in the manual.
Code: Select all
vPath = ;put path here
FileRead, vText, % vPath ;get the text
vOutput := ""
VarSetCapacity(vOutput, StrLen(vText)*2) ;prepare a variable with lots of room
vText := StrReplace(vText, "`r`n", "`n")
Loop, Parse, vText, `n
{
vOutput .= ;use InStr and SubStr here, use A_LoopField
}
Clipboard := vOutput
MsgBox, % "done"
return
Last edited by jeeswg on 11 Jun 2017, 19:16, edited 1 time in total.
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: How to combine text of two seperate files in a new file
thanks bro
i am going to check it
i am going to check it
Re: How to combine text of two seperate files in a new file
vOutput .= InStr(A_LoopField, /*/*/ [, CaseSensitive = false, StartingPos = 5, Occurrence = 1]) ;use InStr and SubStr here, use A_LoopField
i changed the line no 7 like this and nothing happens i dont know how should i define the pattern of /text/text/
sorry but i am very new to this
i changed the line no 7 like this and nothing happens i dont know how should i define the pattern of /text/text/
sorry but i am very new to this
Re: How to combine text of two seperate files in a new file
This should get you most of the way there:
Code: Select all
;InStr is not clever like RegEx or anything, it doesn't handle wildcards
;done simply
vPos1 := InStr(A_LoopField, "/") ;1st occurrence
vPos2 := InStr(A_LoopField, "/", 0, 1, 3) ;3rd occurrence
;done simply (slightly differently)
vPos1 := InStr(A_LoopField, "/", 0, 1, 1) ;1st occurrence
vPos2 := InStr(A_LoopField, "/", 0, 1, 3) ;3rd occurrence
;done cleverly
vPos1 := InStr(A_LoopField, "/") ;1st occurrence
vPos2 := InStr(A_LoopField, "/", 0, vPos1+1, 2) ;2nd occurrence after vPos1
;to finish get the text before vPos1 and the text after vPos2
vOutput .= SubStr(A_LoopField, 1, vPos1-1) . SubStr(A_LoopField, vPos2+1) . "`r`n"
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Re: How to combine text of two seperate files in a new file
Dear Jeeswg
i was stucked in this and i searched again in google and found a relevant thread in following address
https://autohotkey.com/board/topic/3959 ... -patterns/
i tried the code provided there and with a few tries i found it operational
here is the code and i will try your code as well
thanks for your time bro
FileRead, var, C:\update1.txt
FileAppend,% RegExReplace(var,"/.*/.*/"), update2.txt
i dont know about this regexreplace and i need to figure it out
i was stucked in this and i searched again in google and found a relevant thread in following address
https://autohotkey.com/board/topic/3959 ... -patterns/
i tried the code provided there and with a few tries i found it operational
here is the code and i will try your code as well
thanks for your time bro
FileRead, var, C:\update1.txt
FileAppend,% RegExReplace(var,"/.*/.*/"), update2.txt
i dont know about this regexreplace and i need to figure it out
Re: How to combine text of two seperate files in a new file
Could you explain how you do it Notepad++, do you type in some short code.
Cheers, thanks. Good luck with the script.
Cheers, thanks. Good luck with the script.
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
Who is online
Users browsing this forum: jaka1, marypoppins_1 and 130 guests