vbscript - Sorting files by numerical order -


i have batch create shortcut based on order of files, problem when comes numbers presents following problem when passing number 100.

01.mp4 02.mp4 03.rmvb 04.mp4 05.rmvb 06.rmvb 07.rmvb 08.rmvb 09.rmvb 10.rmvb 100.mp4 101.mp4 102.mp4 103.mp4 104.mp4 105.mp4 106.mp4 107.mp4 108.mp4 109.mp4 11.rmvb 

i searched here , found various methods script use works folders , files use accents, & and/or !

example: c:\séries & movies\remix!.mkv (brazil , use e place of and). 

i wonder if there way check content , organize can before save in .ini or after saving same in .ini.

observations:

  1. the folder path loaded first time set command.
  2. after entering path saved in .ini file , loaded.
  3. the script list files within directory not list subfolders , files , folders within it.
  4. the script needs other files work download link below: https://www.mediafire.com/?zcoybkfo8k4nm1t

my full code:

@echo off  title create shortcuts in alphabetical order mode con:lines=3 cols=25 color 1f  cd /d "%~dp0"  if exist "files\command.ini" /f "usebackq delims=" %%x in ("files\command.ini") (set "%%x") if exist "files\config.ini" /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x") if exist "files\files.ini" goto shortcuts if exist "files\command.ini" goto shortcuts if exist "files\config.ini" goto shortcuts  %%f in (""%1"") set "location-of-files=%%~f" %%f in ("%location-of-files%") if "%%~f" neq """" set "location-of-files=%location-of-files:"=%" & set number=1 & goto locationoffiles2  :locationoffiles mode con:lines=18 cols=78 set "location-of-files=r1u4unoiwqa6">nul 2>&1 cls echo location of files set /p location-of-files="¯ location of files: "  set "location-of-files=%location-of-files:"=%" set number=1 if "%location-of-files%"=="r1u4unoiwqa6" goto locationoffiles   :locationoffiles2 mode con:lines=18 cols=78 set "menu=">nul 2>&1 cls %%f in ("%location-of-files%") echo %%~f echo 1(yes) 2(no) set/p menu="¯ menu: " if "%menu%"=="1" goto iniciar if "%menu%"=="2" goto locationoffiles goto locationoffiles2  :iniciar if not exist "%location-of-files%" cls & start /wait files\error.vbs & goto locationoffiles  :name-animeserie1 set "serie_anime=">nul 2>&1 cls echo name serie set /p serie_anime="¯ name: "  if "%serie_anime%"=="" goto name-animeserie1   :name-animeserie2 set "menu=">nul 2>&1 cls %%f in ("%serie_anime%") echo %%~f echo 1(yes) 2(no) set/p menu="¯ menu: " if "%menu%"=="1" goto shortcuts if "%menu%"=="2" goto name-animeserie1 goto name-animeserie2  :shortcuts if exist "files\config.ini" /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x") if not exist "%location-of-files%" del /q "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk">nul 2>&1 & start /min /wait files\desktoprefresh.exe>nul 2>&1 & goto end dir /a-d /b "%location-of-files%" >files\files.ini echo r1u4unoiwqa6.ending >>files\files.ini  start "exclamation01" /min /wait "files\exclamation01.vbs">nul 2>&1  set location-of-files > files\config.ini set serie_anime >> files\config.ini set number > files\command.ini  if exist "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk" del /q "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk">nul 2>&1 & start /min /wait files\desktoprefresh.exe>nul 2>&1  setlocal enabledelayedexpansion  /f "usebackq delims=" %%x in ("files\command.ini") (set "%%x") /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x")  set "cmd=findstr /r /n "^^" files\files.ini | find /c ":""  /f %%a in ('!cmd!') set numbers=%%a  set lines=%number% set atual=1 /f "delims=" %%a in ('type files\files.ini') (     %%b in (!lines!) (         if !atual!==%%b set "ep1=%%a"     )     set /a "atual = atual + 1" )  set "ep2=%ep1%" set "find=*." call set delete=%%ep2:!find!=%% call set ep2=%%ep2:!delete!=%% set ep2=%ep2:.=%  set ep1 > files\command.ini set ep2 >> files\command.ini set lines >> files\command.ini set number >> files\command.ini  endlocal  start "exclamation02" /min /wait "files\exclamation02.vbs">nul 2>&1  /f "usebackq delims=" %%x in ("files\command.ini") (set "%%x") /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x")  if "%ep2%"=="r1u4unoiwqa6" goto end  start /min /wait files\shortcut.exe /f:"c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk" /a:c /t:"%location-of-files%\%ep1%" /d:"episode %serie_anime%">nul 2>&1 if not exist "c:\users\%username%\desktop\[ shortcuts ].lnk" echo %serie_anime%>files\shortcut.ini & start /min /wait files\shortcut.vbs>nul 2>&1 set /a number = %lines% + 1 ::::::::::::::::::::::::::::::::::::::::::::: set location-of-files > files\config.ini set serie_anime >> files\config.ini ::::::::::::::::::::::::::::::::::::::::::::: set ep1 > files\command.ini set ep2 >> files\command.ini set number >> files\command.ini ::::::::::::::::::::::::::::::::::::::::::::: exit  :end if not exist "%location-of-files%" start /wait files\pdom.vbs>nul 2>&1 if exist "%location-of-files%" start /wait files\ending.vbs>nul 2>&1 if exist "%location-of-files%" start "anime" "%location-of-files%">nul 2>&1 del /q "files\files.ini">nul 2>&1 del /q "files\shortcut.ini">nul 2>&1 del /q "files\command.ini">nul 2>&1 del /q "files\config.ini">nul 2>&1 set "location-of-files=">nul 2>&1 set "serie_anime=">nul 2>&1 set "lines=">nul 2>&1 set "ep1=">nul 2>&1 set "ep2=">nul 2>&1 goto locationoffiles 

part need use dir:

:shortcuts if exist "files\config.ini" /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x") if not exist "%location-of-files%" del /q "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk">nul 2>&1 & start /min /wait files\desktoprefresh.exe>nul 2>&1 & goto end dir /a-d /b "%location-of-files%" >files\files.ini echo r1u4unoiwqa6.ending >>files\files.ini  start "exclamation01" /min /wait "files\exclamation01.vbs">nul 2>&1  set location-of-files > files\config.ini set serie_anime >> files\config.ini set number > files\command.ini  if exist "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk" del /q "c:\users\%username%\desktop\%ep2% - %serie_anime%.lnk">nul 2>&1 & start /min /wait files\desktoprefresh.exe>nul 2>&1  setlocal enabledelayedexpansion  /f "usebackq delims=" %%x in ("files\command.ini") (set "%%x") /f "usebackq delims=" %%x in ("files\config.ini") (set "%%x")  set "cmd=findstr /r /n "^^" files\files.ini | find /c ":""  /f %%a in ('!cmd!') set numbers=%%a  set lines=%number% set atual=1 /f "delims=" %%a in ('type files\files.ini') (     %%b in (!lines!) (         if !atual!==%%b set "ep1=%%a"     )     set /a "atual = atual + 1" )  set "ep2=%ep1%" set "find=*." call set delete=%%ep2:!find!=%% call set ep2=%%ep2:!delete!=%% set ep2=%ep2:.=%  set ep1 > files\command.ini set ep2 >> files\command.ini set lines >> files\command.ini set number >> files\command.ini  endlocal 

thanks in advance.

set arg = wscript.arguments set wshshell = createobject("wscript.shell") set inp = wscript.stdin set outp = wscript.stdout     set rs = createobject("adodb.recordset")     if lcase(arg(1)) = "n"     rs         .fields.append "sortkey", 4          .fields.append "txt", 201, 5000          .open         until inp.atendofstream             lne = inp.readline             sortkey = mid(lne, lcase(arg(3)), lcase(arg(4)) - lcase(arg(3)))             if isnumeric(sortkey) = false                 set re = new regexp                 re.pattern = "[^0-9\.,]"                 re.global = true                 re.ignorecase = true                 sortkey = re.replace(sortkey, "")             end if             if isnumeric(sortkey) = false                 sortkey = 0             elseif sortkey = ""                 sortkey = 0             elseif isnull(sortkey) = true                 sortkey = 0             end if             .addnew             .fields("sortkey").value = csng(sortkey)             .fields("txt").value = lne             .update         loop         if lcase(arg(2)) = "a" sortcolumn = "sortkey asc"         if lcase(arg(2)) = "d" sortcolumn = "sortkey desc"         .sort = sortcolumn         while not .eof             outp.writeline .fields("txt").value             .movenext         loop     end      elseif lcase(arg(1)) = "d"     rs         .fields.append "sortkey", 4          .fields.append "txt", 201, 5000          .open         until inp.atendofstream             lne = inp.readline             sortkey = mid(lne, lcase(arg(3)), lcase(arg(4)) - lcase(arg(3)))             if isdate(sortkey) = false                 set re = new regexp                 re.pattern = "[^0-9\\\-:]"                 re.global = true                 re.ignorecase = true                 sortkey = re.replace(sortkey, "")             end if             if isdate(sortkey) = false                 sortkey = 0             elseif sortkey = ""                 sortkey = 0             elseif isnull(sortkey) = true                 sortkey = 0             end if             .addnew             .fields("sortkey").value = cdate(sortkey)             .fields("txt").value = lne             .update         loop         if lcase(arg(2)) = "a" sortcolumn = "sortkey asc"         if lcase(arg(2)) = "d" sortcolumn = "sortkey desc"         .sort = sortcolumn         while not .eof             outp.writeline .fields("txt").value             .movenext         loop     end       elseif lcase(arg(1)) = "t"     rs         .fields.append "sortkey", 201, 260          .fields.append "txt", 201, 5000          .open         until inp.atendofstream             lne = inp.readline             sortkey = mid(lne, lcase(arg(3)), lcase(arg(4)) - lcase(arg(3)))             .addnew             .fields("sortkey").value = sortkey             .fields("txt").value = lne             .update         loop         if lcase(arg(2)) = "a" sortcolumn = "sortkey asc"         if lcase(arg(2)) = "d" sortcolumn = "sortkey desc"         .sort = sortcolumn         while not .eof             outp.writeline .fields("txt").value             .movenext         loop     end     elseif lcase(arg(1)) = "tt"     rs         .fields.append "sortkey", 201, 260          .fields.append "txt", 201, 5000          .open         until inp.atendofstream             lne = inp.readline             sortkey = trim(mid(lne, lcase(arg(3)), lcase(arg(4)) - lcase(arg(3))))             .addnew             .fields("sortkey").value = sortkey             .fields("txt").value = lne             .update         loop         if lcase(arg(2)) = "a" sortcolumn = "sortkey asc"         if lcase(arg(2)) = "d" sortcolumn = "sortkey desc"         .sort = sortcolumn         while not .eof             outp.writeline .fields("txt").value             .movenext         loop     end     end if 

to use

cscript //nologo script.vbs sort {n|d|t|tt} {a|d} startcolumn  endcolumn < input.txt > output.txt 

options

n - extracts number columns specified. looks first number. d - extracts time or date columns specified. looks first date. t - extracts text string including spaces columns specified. tt - extracts text string discarding leading , trailing spaces columns specified. - sorts acending d - sorts decending startcolumn - starting column, first character column 1 endcolumn - ending column 

this command line synax means

the following table describes notation used indicate command-line syntax.

notation description

text without brackets or braces  items must type shown  <text inside angle brackets>  placeholder must supply value  [text inside square brackets]  optional items  {text inside braces}  set of required items; choose 1  vertical bar (|)  separator mutually exclusive items; choose 1  ellipsis (…)  items can repeated 

Popular posts from this blog