Tema: Re: Kas gali parašyti komandą?
Autorius: saimhe
Data: 2012-08-22 01:16:38
> užduotis - paskaičiuoti kiekvieno folderio bedrą grojimo laiką (duration, combined length ar kažkaip pan) ir surašyti į txt failą

  http://ports.gnu-darwin.org/audio/mp3info/work/mp3info-0.8.5a/win32/mp3info.exe
sugeba duoti (atitinkamai pribūrus) nurodyto failo trukmę sekundėmis. Jei
nurodyta daug failų, pvz., *.mp3, tada duos kiekvieno rasto failo trukmę.
Duoti bendros trukmės nemoka.
  Skaičiuoti sumą windowsuose bjauru, bet galima. Panašiom priemonėm galima
perskaičiuoti į valandas ir minutes.
  Galutinis rezultatas, mp3info.cmd:

@echo off
if -%1==- echo Directory name required && exit /b
pushd %1
echo @echo off >%tmp%\~sum.bat
echo set /A SUM=0 >>%tmp%\~sum.bat

for /f "usebackq delims=" %%f in (`dir /b/s "*.mp3" 2^>nul`) do "c:\Program Files\mp3info.exe"
 -p "set /A SUM=%%%%SUM%%%% + %%S\n" "%%f" >>%tmp%\~sum.bat

echo set /A SEC=%%SUM%% %%%% 60 >>%tmp%\~sum.bat
echo set /A SUM=%%SUM%% / 60 >>%tmp%\~sum.bat
echo set /A MN=%%SUM%% %%%% 60 >>%tmp%\~sum.bat
echo set /A SUM=%%SUM%% / 60 >>%tmp%\~sum.bat
echo echo %%SUM%%:%%MN%%:%%SEC%% %CD% >>%tmp%\~sum.bat
call %tmp%\~sum.bat
del %tmp%\~sum.bat
popd

  Eilutę su FOR reikia sujungti su tolimesne.
  Naudojimo pavyzdys:

for /d %d in (E:\musiclib\*.*) do call E:\mp3info.cmd "%d" >>times.txt

  times.txt turinio pavyzdys:

2:46:25 E:\musiclib\Amethystium
0:48:8 E:\musiclib\Bernward Koch
6:12:59 E:\musiclib\Deep Forest
0:18:5 E:\musiclib\Muse
6:6:31 E:\musiclib\Rammstein
12:23:35 E:\musiclib\Vangelis
1:36:35 E:\musiclib\Vladiswar Nadishana

   Pridėti nereikšminius nulius arba tarpus, kurie duos minimalų skaičiaus
plotį, tikriausiai neįmanoma. Tačiau nesunku tarp trukmės ir katalogo vardo
įdėti ne tarpą, bet Tab simbolį -- vis gražiau atrodys.
   Dirba lėtai, nes susirenka visus failus visame katalogų medyje žemiau
nurodyto katalogo ir kiekvienam iš jų kviečia mp3info.exe. Iš anksto žinant,
kad failai yra tik nurodytame kataloge ir ne giliau, galima mp3info.exe
duoti tiesiog "*.mp3" (be FOR), tada truputį pagreitės.

-- 
  saimhe