I have scripted ReadReverse.bat to return the records in a text file in reverse order, from last to first.
The syntax for using ReadReverse.bat is:
for /f "Tokens=*" %%a in ('ReadReverse InputFile') do ( @echo %%a )Where InputFile is the file name you wish to read in reverse order. %%a contains each returned record.
ReadReverse.bat contains:
@echo off if \{%1\}==\{\} @echo Syntax: ReadReverse FileName&goto :EOF if not exist %1 @echo Syntax: ReadReverse - %1 does not exist.&goto :EOF setlocal EnableDelayedExpansion set input=%1 set output="%TEMP%\ReadReverse_%RANDOM%.TMP" if exist %output% del /q %output% if exist "%TEMP%\ReadReverse.vbs" goto :doit @echo.Dim objArguments, fso, readfile, contents, writefile, seq>"%TEMP%\ReadReverse.vbs" @echo.Set objArguments = Wscript.Arguments>>"%TEMP%\ReadReverse.vbs" @echo.input=objArguments(0)>>"%TEMP%\ReadReverse.vbs" @echo.output=objArguments(1)>>"%TEMP%\ReadReverse.vbs" @echo.set fso = CreateObject("Scripting.FileSystemObject")>>"%TEMP%\ReadReverse.vbs" @echo.set readfile = fso.OpenTextFile(input, 1, false)>>"%TEMP%\ReadReverse.vbs" @echo.set writefile = fso.CreateTextFile(output, 2)>>"%TEMP%\ReadReverse.vbs" @echo.seq = 999999999>>"%TEMP%\ReadReverse.vbs" @echo.Do until readfile.AtEndOfStream = True>>"%TEMP%\ReadReverse.vbs" @echo. contents = readfile.ReadLine>>"%TEMP%\ReadReverse.vbs" @echo. seq = seq + 1 >>"%TEMP%\ReadReverse.vbs" @echo. writefile.writeLine seq ^& "," ^& contents>>"%TEMP%\ReadReverse.vbs" @echo. loop>>"%TEMP%\ReadReverse.vbs" @echo.readfile.close>>"%TEMP%\ReadReverse.vbs" @echo.writefile.close>>"%TEMP%\ReadReverse.vbs" :doit cscript //nologo "%TEMP%\ReadReverse.vbs" %input% %output% for /f "Tokens=1* Delims=," %%a in ('type %output%^|Sort /Reverse') do ( @echo %%b ) del /q %output% endlocal
0 comments
Hide comments