Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Aanmaken folders dmv batch-file

Pagina: 1
Acties:

  • maartend
  • Registratie: Augustus 2002
  • Nu online
Hoi

Ik heb mijn muziek gesorteerd, maar nog niet helemaal goed.
Heb nu een heleboel folders die als volgt zijn opgebouwd (ik geef een voorbeeld);
[1979] Dead Kennedys - Live Earth Tavern Portland 19-11-79 [Early Show]
[1990] Cabaret Voltaire - Live At The Ymca 27-10-1979
[1990] Coil - Wrong Eye & Scope
[1998] Coil - Songs Of The Week (Download Version)
enz.

Nu wil ik dit dus gaan uitsorteren, dus alles van Coil bij elkaar enz. Daarvoor wil ik een batch-file maken dat ik laat lopen en dat van alle muziekfolders een nieuwe folder maakt met enkel de bandnaam, dus
Dead Kennedys
Cabaret Voltaire
Coil
enz.
daarna verplaats ik de originele folders handmatig in de nieuwe folder. Dus nogmaals, er moet geen rename worden gedaan, maar echt nieuwe folders aangemaakt. Deder aangemaakte folders blijven dus nog bestaan.

bestaat er zoiets in in een of ander programma (niet te vinden voor me, maar ik weet niet eens op welke zoekwoorden ik moet googlen) of is zoiets te doen met commando's in een .bat bestand? Zo ja, hoe dan?

Ik heb wel het volgende gevonden, maar weet niet precies wat het doet of hoe het in elkaar steekt, zo goed ben ik nou ook weer niet;
@ECHO OFF
CLS
FOR /F "tokens=1-3 delims=[]-" %%A IN ('dir /b /a:d') DO (
IF /I "%%C" NEQ "" (
mkdir "%%B" >NUL 2>&1
CALL:moveFolder "%%A" "%%B" "%%C"
)
)
GOTO:EOF

:moveFolder
SET Year=%~1
SET Artist=%~2
SET Album=%~3
IF "%Artist:~0,1%" == " " SET Artist=%Artist:~1%
IF "%Artist:~-1,1%" == " " SET Artist=%Artist:~0,-1%
IF "%Album:~0,1%" == " " SET Album=%Album:~1%
move "[%Year%] %Artist% - %Album%" "%Artist%\%Year%_%Album%"

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Voor alleen hernoemen heb je geen script nodig, neem een MP3 tagger die ook kan renamen. Zo gebruik ik al tijden met veel plezier MediaMonkey.

Als toch batch: Je wilt niet dergelijke batchfiles maken als je niet weet wat het doet, voor je het weet heeft alles de verkeerde naam. Dus als je niet weet hoe batch files maken werkt: eerst leren. Het is een hele simpele combinatie van logica en manpages lezen om te zien wat elk los tool doet. Kijk met for /? wat FOR doet, met if /? wat IF doet, etc.
Maar je wilt niet aan batch meer beginnen, dat zal vast snel verouderen. Ga bijv WSH/VBScript of Powershell leren. Die kennis gaat waarschijnlijk een stuk langer mee :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • maartend
  • Registratie: Augustus 2002
  • Nu online
F_J_K schreef op zaterdag 05 december 2009 @ 11:27:
Voor alleen hernoemen heb je geen script nodig, neem een MP3 tagger die ook kan renamen. Zo gebruik ik al tijden met veel plezier MediaMonkey.

Als toch batch: Je wilt niet dergelijke batchfiles maken als je niet weet wat het doet, voor je het weet heeft alles de verkeerde naam. Dus als je niet weet hoe batch files maken werkt: eerst leren. Het is een hele simpele combinatie van logica en manpages lezen om te zien wat elk los tool doet. Kijk met for /? wat FOR doet, met if /? wat IF doet, etc.
Maar je wilt niet aan batch meer beginnen, dat zal vast snel verouderen. Ga bijv WSH/VBScript of Powershell leren. Die kennis gaat waarschijnlijk een stuk langer mee :)
Ik wil niet herbenoemen, ik moet nieuwe folders aanmaken. En het gaat niks met mijn MP3 te maken hebben, voor hetzelfde geld waren het folders met foto's.

En WSH of powershell is ook niet echt nodig voor me, het moet iets enkelmaligs voor me zijn en voortaan deze blunder niet meer maken. Ik ken If en for statements nog wel uit mijn basic tijd, ik heb "zelfs" :) wel eens iets dergelijx in C gemaakt, maar ik heb echt geen idee meer hoe ik van een naam de eerste 7 karakters niet meer lees en na een bepaalde karakter alles drop.

  • tweakerharrie
  • Registratie: Juli 2009
  • Laatst online: 16-09 09:42
Als je mp3 bestanden goed getagged zijn is TAGSCAN erg handig. Deze kan bestandsnamen maken van je mp3's en ook submappen. Eerst oefenen op een kopie van een paar files.

  • maartend
  • Registratie: Augustus 2002
  • Nu online
Aan iedereen, lees even wat ik wil. Ik wil NIEUWE folders aanmaken, geen bestaande hernoemen of vanuit mijn tags de foldernaam herbenoemen. Dat kan ik allemaal wel met Tag en Rename.
En mocht ik het niet duidelijk hebben omschreven, geef ajb dan even aan waar de onduidelijkheid ontstaat, dan kan ik mijn TS aanpassen.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Oeps :X
Ik dacht veel ingewikkelder. Je wilt alleen o.b.v. de directorylijst
[1979] Dead Kennedys - Live Earth Tavern Portland 19-11-79 [Early Show]
[1990] Cabaret Voltaire - Live At The Ymca 27-10-1979
[1990] Coil - Wrong Eye & Scope
[1998] Coil - Songs Of The Week (Download Version)

etc
dat er extra directories worden aangemaakt
Dead Kennedys
Cabaret Voltaire
Coil

etc. Klopt?
Dan is
code:
1
2
3
dir /b /a:d > tmpdirlist.txt
FOR /F "tokens=1,2* delims=[]-" %%A IN (tmpdirlist.txt) DO (md "%%B">NUL 2>&1)
del tmpdirlist.txt

genoeg, werkt hier ook na testen met jouw dirlist-voorbeeld. Die tmpdirlist.txt gebruik ik overigens puur voor de leesbaarheid. De rest van de code is om meteen automagisch de dir te verplaatsen maar dat gaat niet helemaal goed omdat je na de eerste keren op verschillende en onvoorspelbare plaatden - en [] gebruikt.

Uitlegje:
Regel 1: maak een tijdelijk file met alle dirs
Regel 2: voor elke regel, deel de regel op in onderdelen die worden afgebakend door een [,],of een -. Noem de eerste %%A en noem volgende blokken dus %%B, etc. Per regel, maak een directory aan die de naam heeft van het tweede blok (%%B, dus de naam van de band) en knikker de output incl foutmeldingen van het maken weg door naar NUL te sturen.
Regel 3: verwijder de tijdelijke file weer

[ Voor 20% gewijzigd door F_J_K op 05-12-2009 12:45 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • maartend
  • Registratie: Augustus 2002
  • Nu online
Dat is precies wat ik bedoel ja.
Was idd al begonnen met alles naar een textfile te direen en van daaruit verder te zoeken.

Ik ga het even proberen, thnx

bezig, enkel 2 problemen.
Een naam als Leæther wordt in mijn dirlist neergezet als ; Le‘ther
Is dat nog op te vangen? Of is dat een beperking van DOS (maar die kent toch ook alle karakters?)
En ik krijg ; %%A niet verwacht p dit moment en er wordt geen folder aangemaakt.
Zou het er mee te maken hebben dat ik als scheiding een spatie heb?
Dus "[2008] " en dan als 8 karakter begin bandnaam. Kan ik daar iets mee, dat hij gewoon de eerste 7 karakters laat vallen en dan doorgaat tot een - als scheding en de spatie daarvoor ook laat vallen?

[ Voor 87% gewijzigd door maartend op 05-12-2009 12:57 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

%%A niet verwacht: heb je letterlijk de drie regels die ik noem gekopieerd naar een batchfile, die batchfile in de juiste dir gezet en die gestart? Werkte hier namelijk prima in XP.

Leæther gaat idd niet werken via de omweg via een bestand (voor zover ik weet). Dan dus op 1 regel:
FOR /F "usebackq tokens=1,2* delims=[]-" %A IN (`dir /b /ad`) DO (md "%B")

Natuurlijk met %% ipv % als je het vanuit een batchfile doet, maar dit valt met copypaste uit te proberen..

Overigens, klenie correctie: automatisch verplaatsen zou wel moeten kunnen (de rest heet %%C, dus kan je heel simpel de originele dirname herleiden om te kunnen verplaatsen). Verplaatsen doe je met het tweede deel van de code die je vond.

Edit: let op, ik gebruik hier natuurlijk backticks, geen quotes, rond de dir-opdracht.

[ Voor 16% gewijzigd door F_J_K op 05-12-2009 16:03 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • maartend
  • Registratie: Augustus 2002
  • Nu online
F_J_K schreef op zaterdag 05 december 2009 @ 16:01:
%%A niet verwacht: heb je letterlijk de drie regels die ik noem gekopieerd naar een batchfile, die batchfile in de juiste dir gezet en die gestart? Werkte hier namelijk prima in XP.

Leæther gaat idd niet werken via de omweg via een bestand (voor zover ik weet). Dan dus op 1 regel:
FOR /F "usebackq tokens=1,2* delims=[]-" %A IN (`dir /b /ad`) DO (md "%B")

Natuurlijk met %% ipv % als je het vanuit een batchfile doet, maar dit valt met copypaste uit te proberen..

Overigens, klenie correctie: automatisch verplaatsen zou wel moeten kunnen (de rest heet %%C, dus kan je heel simpel de originele dirname herleiden om te kunnen verplaatsen). Verplaatsen doe je met het tweede deel van de code die je vond.

Edit: let op, ik gebruik hier natuurlijk backticks, geen quotes, rond de dir-opdracht.
Ik voerde het vanuit dos in. Moet eigenlijk toch ook kunnen?
Afijn, ik ga weer proberen.

Lukt wel vanuit Batch File, enkel een spatie teveel voor de bandfolder naam. Begint dus met een spatie. ff kijken. Maar ik ben er bijna en je verschrikkelijk dankbaar.

Oke, vervolgens gooi ik er een programma over om die eerste spatie weg te halen en zijn al mijn namen weer geworden zoals ze waren, dus leatherstrip zoals het hoort.

[ Voor 13% gewijzigd door maartend op 05-12-2009 21:44 ]

Pagina: 1