SkimID3.EXE is Win32 console utility which reads metainformation from sound files in formats MP3, Ogg, WMA, ASF, WAV. Information is written on standard output in the format AttributeName=Attribute value. Output format changes to SET AttributeName=Attribute value when parameter /S (alias /SET) is used. Complete list of attributes is in the table below.
This program is freeware and may be used and redistributed without any fee by anybody. For the latest version see vit$oft freeware web page. Bugs may be reported by email.
SkimID3 needs no installation. Just put the executable to any directory in your PATH.
Inspected filename is given as command line parameter and must be enclosed in double quotes if it contains spaces. Wildcard characters ? * are not allowed in the filename.
When a parameter /D or /DC is given instead of file name, SkimID3 creates HTML documentation file SkimID3.HTM (English) or SkimID3C.HTM (Czech) in the current directory.
Parameter /S (or /Set) tells SkimID3 to prefix each output line with the command SET. This allows to set metainformation into environment variables in W9x batches.
Parameter /W (or /Wait) makes SkimID3 to wait until a key Enter is pressed. This prevents the console window from quickly disapearing when SkimID3 is invoked from Explorer or from Start/Run dialog.
Each piece of metainformation is output on a new line. Attribute name is immediately followed with equal sign, value of attribute is not embedded in quotes even if it contains white spaces. This format is convenient for setting into environment variables, see examples below.
Attribute values may contain characters which are unacceptable in SET command, SkimID3 replaces such "dangerous" characters " % & < > ^ | with undescore _. National non-ASCII characters are converted to OEM encoding using the codepage of current user.
0 ... information retrieved successfully
4 ... unsupported file format
8 ... file was not found
12 ... otherwise
Sound file format, which is recognized from internal structure rather than from filename extension, is presented as attribute FORM=.
Attribute CHAN= shows the number of channels in sound file. Typical cases of 1 or 2 channels are replaced with identifiers Mono or Stereo. MP3 stereo files may also be encoded as Joint or Dual.
Both attributes SECS= and MINS= display the same duration. SECS= is better computable, MINS= is better readable.
VERS=, RATE and SAMP= inform about digitalization parameters.
Sound files may contain additional information about "software content" such as song title, singer name etc. Unlike encoding attributes, this metainformation is not always necessarily present and its form depends on sound file format:
SkimID3 uses ID3v2 names to unify the output of attributes with the same meaning: TALB= for the album name, TIT2= for song title, TPE1= for the artist name, TCON= for music genre, TRCK= for the track number, TYER= for the year of release, TCOP= for WMA copyright information and COMM= for the comment (description).
If sound file contains any other attribute, it is displayed as is, for instance WM/Composer=.
If the MP3 file contains both ID3v1 and ID3v2 attributes with the same meaning, ID3v2 is prefered.
As the last resort, some atrtibutes may be taken from filesystem: If the file does not contain Title, Album, Year attribute, TIT2= is set to file name without extension, TALB= is set to directory name and TYER= is set according to file date.
|Tag||Format MP3||Format Ogg||Format WMA/ASF||Format WAV|
|CHAN=||Number of channels or Mono/Stereo/Joint/Dual|
|MINS=||Duration in minutes:seconds|
|ORIG=||Original media Yes/No|
|RATE=||Average bitrate in bps|
|SAMP=||Sampling frequency in Hz|
|SECS=||Duration in seconds|
|VERS=||MPEGxLAYERy||Vorbis version Nr||WAV encoding format Nr|
Open the Console Window (DOS Prompt), change to the directory with sound files and write SkimID3 followed with the sound file name. Example:
C:\>SkimID3 %SystemRoot%\Media\tada.wav FORM=WAV VERS=1 CHAN=Stereo SAMP=22050 RATE=705600 SECS=1 MINS=0:01 TIT2=tada TALB=Media TYER=2001
Following registry entries will add a new item called SkimID3 to the Explorer context menu. Copy and paste it to a file SkimID3.REG and import with REGEDIT SkimID3.REG. Then when you right-click a sound file in Explorer, you'll be able to inspect its properties with the new option SkimID3.
REGEDIT4 [HKEY_CLASSES_ROOT\SoundFile] [HKEY_CLASSES_ROOT\SoundFile\shell] [HKEY_CLASSES_ROOT\SoundFile\shell\Play] @="&Play" [HKEY_CLASSES_ROOT\SoundFile\shell\Play\command] @="MPlay32 /Play /Close \"%L\"" [HKEY_CLASSES_ROOT\SoundFile\shell\SkimID3] @="Skim&ID3" [HKEY_CLASSES_ROOT\SoundFile\shell\SkimID3\command] @="SkimID3 /Wait \"%L\"" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3] "ProgId"="SoundFile" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wma] "ProgId"="SoundFile" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ogg] "ProgId"="SoundFile" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wav] "ProgId"="SoundFile"
Although SkimID3 can be used interactively, its main destination are batch scripts. With the /Set parameter, the output can be redirected to a temporary batch file and the batch file immediately called. This puts the metainformation into environment variables.
SkimID3 /Set "C:\MUSIC\Rock\The Free Story\Heavy Load.mp3" >BATCH.BAT CALL BATCH.BAT ECHO ID3 tags are now in environment variables: SET
In NT-based Windows there is an easier way how to put the info into variables. Following examples are targeted to Win2K/XP:
FOR /F "tokens=*" %%* IN ('SkimID3 "Smile Of The Beyond.mp3"') DO SET %%* ECHO ID3 tags are now in environment variables: SET
SkimID3 is called for each MP3 file in the current directory and its subdirectories as returned from DIR /S /B *.MP3. The output is redirected to the FIND command which searches for the desired word "Beatles" and, if found, the filename is appended to the playlist. Ogg and WMA sound files are treated exactly the same way.
@ECHO OFF FOR /F "tokens=*" %%* IN ('DIR /S /B *.MP3') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u FOR /F "tokens=*" %%* IN ('DIR /S /B *.Ogg') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u FOR /F "tokens=*" %%* IN ('DIR /S /B *.WMA') DO SkimID3 "%%*"|FIND "Beatles"&&ECHO %%*>>Beatles.m3u
This script will inspect duration of MP3 files in "C:\Music\Mix" directory and move all songs shorter than 60 seconds to "C:\Music\Trash" directory.
@ECHO OFF MD "C:\Music\Trash" FOR /F "tokens=*" %%* IN ('DIR /S /B "C:\Music\Mix\*.MP3"') DO CALL :JOB "%%*" GOTO :EOF :JOB FOR /F "tokens=*" %%* IN ('SkimID3 /S %1') DO %%* ECHO Duration of %1 is %MINS% IF %SECS% LEQ 60 MOVE %1 "C:\Music\Trash" & ECHO Moved to Trash. GOTO :EOF
Being bored with local radio stations I wrote this batch and scheduled it to wake me up every morning. It randomly selects songs from my computer, calls SkimID3 to get info about the music and anounces each song with synthetic voice. A fine software ReadPlease2003 from www.readplease.com is employed as a narrator. The limited freeware version is sufficient for our purpose. After installation, ReadPlease2003 associates with file extenstion .rpps and the following batch submits anouncements using the command START file.rpps. Then the processing is paused with SLEEP utility until narrator chatters everything out.
@ECHO OFF & TITLE Talking MP3 player IF "%CMDEXTVERSION%"=="2" GOTO :CmdOK ECHO This script is intended for WindowsXP/2000 only. GOTO :EOF :CmdOK IF EXIST %TEMP%\PLAYLIST.M3U GOTO :UseOldList ECHO As this is the first time talking player is running, ECHO please wait until a total MP3 playlist is built. FOR %%d IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO ( FSUTIL fsinfo drivetype %%d:|FIND "disk"&&DIR /B /S %%d:\*.MP3 %%d:\*.WMA >>%TEMP%\PLAYLIST.M3U ) :UseOldList ECHO Hi.>%TEMP%\INTRO.rpps & START %TEMP%\INTRO.rpps SLEEP 2 &:: This will start ReadPlease2003.exe if properly installed. ECHO This is %COMPUTERNAME% talking player.>>%TEMP%\INTRO.rpps START %TEMP%\INTRO.rpps SLEEP 6 &:: Give it some time to announce the intro. FOR /F "tokens=3" %%* IN ('FIND /C /V "" %TEMP%\PLAYLIST.M3U') DO SET TOTAL_SONGS=%%* ECHO Talking player has found %TOTAL_SONGS% songs ECHO on %COMPUTERNAME% computer to choose from. IF %TOTAL_SONGS% EQU 0 GOTO :EOF :: Here we set how many songs will play in one session. SET REMAINING_SONGS=10 :PlayASong - randomly draw one line from playlist. SET /A NUM=%RANDOM% %% %TOTAL_SONGS% SET FULLNAME=&:: Now read the line Nr. %NUM% from playlist: FOR /F "tokens=* skip=%NUM%" %%* IN (%TEMP%\PLAYLIST.M3U) DO SET FULLNAME="%%*"&GOTO :Chosen :Chosen ECHO Chosen song Nr.%NUM%: %FULLNAME% SET TCON=&SET TYER=&SET TIT2=&SET TPE1=&SET TALB= FOR /F "tokens=*" %%* IN ('SkimID3 %FULLNAME%') DO SET %%* TITLE %FULLNAME% (ECHO: IF NOT "%TCON%"=="" ECHO Now we are going to play some %TCON% music IF NOT "%TYER%"=="" ECHO from the year %TYER%. IF NOT "%TIT2%"=="" ECHO We will play a song called - "%TIT2%" IF NOT "%TPE1%"=="" ECHO - by "%TPE1%" IF NOT "%TALB%"=="" ECHO - from the album - "%TALB%". )>%TEMP%\PROLOG.rpps START %TEMP%\PROLOG.rpps & SLEEP 14 :: Old version 5 of MediaPlayer is preferred because it is :: well behaved and shutdowns itself when the song is over. MPLAY32 /Play /Close %FULLNAME% (ECHO: IF NOT "%TIT2%"=="" ECHO You were listening to the song called - "%TIT2%" IF NOT "%TPE1%"=="" ECHO - by "%TPE1%" IF NOT "%TALB%"=="" ECHO - from the album - "%TALB%". )>%TEMP%\EPILOG.rpps START %TEMP%\EPILOG.rpps & SLEEP 6 SET /A REMAINING_SONGS=%REMAINING_SONGS% - 1 IF %REMAINING_SONGS% GTR 0 GOTO :PlayASong TITLE Talking MP3 player ECHO Talking player is now over. Good bye. >%TEMP%\OUTRO.rpps START %TEMP%\OUTRO.rpps & SLEEP 8 & TSKILL "ReadPlease2003"