@echo off cls Color 0A title batch-read.bat - By MarioMasta64 - v3.0-beta if "%1" NEQ "" setlocal enabledelayedexpansion & set /a "marker=%3" & set /a "rows=%2" & set "file=%1" & call :openfile & exit /b :filebrowse if not exist fileBrowse.vbs call :createfilebrowser echo the file manager will appear behind me for /f "tokens=* delims=" %%A in ('call CSCript //NoLogo fileBrowse.vbs') do set file="%%A" set /a rows=10 set /a marker=1 call batch-read.bat "%file%" "%rows%" "%marker%" (goto) 2>nul :createfilebrowser echo Option Explicit > fileBrowse.vbs echo. >> fileBrowse.vbs echo Wscript.Echo BrowseForFile( ) >> fileBrowse.vbs echo. >> fileBrowse.vbs echo 'Bypasses IE7+ c:\fakepath\file.txt problem >> fileBrowse.vbs echo Function BrowseForFile() >> fileBrowse.vbs echo With CreateObject("WScript.Shell") >> fileBrowse.vbs echo Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") >> fileBrowse.vbs echo Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2) >> fileBrowse.vbs echo Dim tempName : tempName = fso.GetTempName() ^& ".hta" >> fileBrowse.vbs echo Dim path : path = "HKCU\Volatile Environment\MsgResp" >> fileBrowse.vbs echo With tempFolder.CreateTextFile(tempName) >> fileBrowse.vbs echo .Write "" ^& _ >> fileBrowse.vbs echo "" >> fileBrowse.vbs echo .Close >> fileBrowse.vbs echo End With >> fileBrowse.vbs echo .Run tempFolder ^& "\" ^& tempName, 1, True >> fileBrowse.vbs echo BrowseForFile = .RegRead(path) >> fileBrowse.vbs echo .RegDelete path >> fileBrowse.vbs echo fso.DeleteFile tempFolder ^& "\" ^& tempName >> fileBrowse.vbs echo End With >> fileBrowse.vbs echo. >> fileBrowse.vbs echo End Function >> fileBrowse.vbs (goto) 2>nul :openfile call :ReadLines call :ReadFile choice /C:ZXCVBM /N /m "[z] (exit) [x] (down) [c] (up) [v] (page down) [b] (page up) [m] (update text reader - will exit program)" :: set /p choice="[z] (exit) [x] (down) [c] (up) " set /a minpagedown = !Rows! + 1 set /a maxpageup = !MaxLines! - !Rows! echo !minpagedown! echo !maxpageup! if %errorlevel%==1 endlocal & (goto) 2>nul if %errorlevel%==2 call :up & goto openfile if %errorlevel%==3 call :down & goto openfile if %errorlevel%==4 call :pageup & goto openfile if %errorlevel%==5 call :pagedown & goto openfile if %errorlevel%==6 call :update & goto openfile call :%choice% goto openfile :up if !MaxLines! GEQ !Rows! ( if !marker! LSS !MaxLines! set /a marker+=1 ) (goto) 2>nul :down if !MaxLines! GEQ !Rows! ( if !marker! GTR 1 set /a marker-=1 ) (goto) 2>nul :pageup if !MaxLines! GEQ !Rows! ( if !marker! LSS !maxpageup! set /a marker+=!Rows! ) (goto) 2>nul :pagedown if !MaxLines! GEQ !Rows! ( if !marker! GTR !minpagedown! set /a marker-=!Rows! ) (goto) 2>nul :ReadLines set /a Counter=0 for /f "DELIMS=" %%i in ('type %file%') do ( set /a Counter+=1 ) set MaxLines=!Counter! (goto) 2>nul :Update .\bin\wget.exe -q --show-progress https://mariomasta64.me/batch/text-reader/update-text-reader.bat if exist update-text-reader.bat start update-text-reader.bat & exit echo update failed (goto) 2>nul :ReadFile cls if !MaxLines! LSS !Rows! ( echo less than !Rows! lines echo all lines call text-read-lines-alt.bat 1 !MaxLines! ) if !MaxLines! GEQ !Rows! ( set /a start = !marker! set /a end = !marker! + !Rows! - 1 echo more than !Rows! lines echo first !Rows! out of !MaxLines! call text-read-lines-alt.bat !start! !end! )