@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!
)