it currently displays the total amount of max lines. i have to make it show live the number of processed lines (not total without counting)
i added this
Code: Select all
Gui, Add, StatusBar,, Bar's starting text (omit to start off empty).
SB_SetText("There are " . MaxLines . " lines total by " . SourceLines . " times.")
Code: Select all
#NoEnv
SetBatchLines, -1
SourcePaths := ["C:\New folder (3)\New folder\source5.txt"
, "C:\New folder (3)\New folder\source4.txt"
, "C:\New folder (3)\New folder\source3.txt"
, "C:\New folder (3)\New folder\source2.txt"
, "C:\New folder (3)\New folder\source1.txt"]
TargetPath := "C:\New folder (3)\New folder (2)" ; NO CLOSING \
TargetExt := "txt" ; File type
For Each, SourcePath in SourcePaths
{
FileRead, SourceData, %SourcePath%
SourceLines := StrSplit(SourceData, "`r`n")
MaxLines := SourceLines.Length() ; <-------- look below
Gui, Destroy
Gui, Add, StatusBar,, Bar's starting text (omit to start off empty).
SB_SetText("There are " . MaxLines . " lines total by " . SourceLines . " times.")
Gui,Add,Progress,x10 y10 w461 range0-%MaxLines% vMyProgressBar ; <-------- We need to know the MaxLines variable before Progress bar is built
Gui,Show
Loop Files, %TargetPath%\*.%TargetExt%
{
If (A_Index > MaxLines)
ErrorExit("More files than source lines (" . MaxLines . ")!")
If !(FileObj := FileOpen(A_LoopFileLongPath, "rw"))
ErrorExit("Could not open the target file " . A_LoopFileLongPath . "!")
FileContent := FileObj.Read()
If (Pos := RegExMatch(FileContent, "Pim)^\[content\]$", Len)) {
FileObj.Pos := Pos + Len - 1
FileObj.Write("`r`n" . SourceLines[A_Index])
FileObj.Write(SubStr(FileContent, Pos + Len))
GuiControl,,MyProgressBar, +1
}
FileObj.Close()
If (Pos = 0)
ErrorExit(A_LoopFileLongPath . "`r`ncould not find the [content] line!")
}
}
ErrorExit(Msg) {
MsgBox, 16, ERROR!, %Msg%
ExitApp
}