· 8 years ago · Apr 01, 2018, 12:22 PM
1@echo off
2
3setlocal enabledelayedexpansion
4
5@echo This script will create an SQLite database of .wav or .aiff samples in the folder you select
6@echo the script must be placed in the same directory as your sample folder.
7@echo Columns will be populated based on the following file structure:
8@echo SampleFolder\Publisher\PackName\SampleCategory (i.e. Ambience)\SampleType (i.e. Rain)\Filename.wav
9
10set /p "fld=What is the name of your sample folder? "
11
12> "%fld%\SampleDb.sql" (
13 echo BEGIN;
14 echo CREATE TABLE IF NOT EXISTS "Samples" ^(File TEXT NOT NULL, Publisher TEXT, Pack TEXT NOT NULL, Category TEXT, Type TEXT, Size INT^);
15)
16
17for /r "%fld%" %%A in (*.aiff *.wav) do (
18 set "relative_path=%%~dpA"
19 set "relative_path=!relative_path:%cd%=!"
20 if "!relative_path:~,1!" == "\" set "relative_path=!relative_path:~1!"
21
22 call :part "!relative_path!"
23
24 set "File=%%~nxA"
25 set "File='!File:'=''!'"
26
27 >> "%fld%\SampleDb.sql" echo INSERT OR REPLACE INTO "Samples" VALUES ^(!File!, !Publisher!, !Pack!, !Category!, !Type!, %%~zA^);
28
29 @echo !File!, !Publisher!, !Pack!, !Category!, !Type!, %%~zA
30)
31
32>> "%fld%\SampleDb.sql" echo COMMIT;
33
34sqlite3 -cmd ".read '%fld%\SampleDb.sql'" "%fld%\SampleDb.sqlite" ""
35
36pause
37exit /b
38
39:part
40 for /f "tokens=2-5 delims=\" %%A in ("%~1") do (
41 set "Publisher=%%~A"
42 if defined Publisher (
43 set "Publisher='!Publisher:'=''!'"
44 ) else set "Publisher=NULL"
45
46 set "Pack=%%~B"
47 if defined Pack (
48 set "Pack='!Pack:'=''!'"
49 ) else "Pack=''"
50
51 set "Category=%%~C"
52 if defined Category (
53 set "Category='!Category:'=''!'"
54 ) else set "Category=NULL"
55
56 set "Type=%%~D"
57 if defined Type (
58 set "Type='!Type:'=''!'"
59 ) else set "Type=NULL"
60 )
61exit /b