Echo parameter met haakje werkt niet

Status
Niet open voor verdere reacties.

PSVSupporter

Gebruiker
Lid geworden
13 aug 2009
Berichten
148
Deze code geeft een foutmelding, zodra er een haakje sluiten in een directorynaam of bestandsnaam zit:

Code:
for /f "tokens=* delims=\" %%a in ('cd') do set "parent1=%%~a\"
for /f  "tokens=* delims=\" %%a in ('dir "*.mp3" /on /a /b /s') do (
set file=%%~a
call echo %%file:%parent1%=%%>> "__%~n1.m3u"
)

Ik wil in het m3u bestand alle bestanden zetten, zonder volledig pad. Want dan kan mijn mediaspeler de bestanden niet vinden. (i.v.m. schijfletter)
Als ik dit doe:
Code:
call echo "%%file:%parent1%=%%">> "__%~n1.m3u"
, krijg ik in het bestand aanhalingstekens voor en achter de bestandsnaam, dus dat gaat ook niet.
Hoe los ik dit op?

(Voorbeeld:
Directory: M:\Muziek\Band\U2\Greatest Hits (1980-2000)\
Of
Bestand: Queen (Radio mix).mp3
)
 
1. Waarom gebruik je call? Na call hoort een .bat bestand te komen die wordt aangeroepen.
Dus echo %%file:%parent1%=%%>> "__%~n1.m3u"
is goed genoeg.
2. Waarom is het volgende niet goed genoeg:
dir /o:n /b *.mp3 > Playlist.m3u
Hiermee komen alle mp3 bestanden in de huidige map zónder pad gesorteerd op naam in Playlist.m3u te staan.

Tijs.
 
Laatst bewerkt:
De eerste is nodig om een stuk tekst te vervangen met niets.
De tweede wil ik niet, want dan kan ik niet recursief bestanden in de file krijgen.

Bijvoorbeeld:
M:\Muziek\Band\X\Album1\Nummer1
M:\Muziek\Band\X\Album2\Nummer1
M:\Muziek\Band\Y\Album1\Nummer1
M:\Muziek\Band\Y\Album2\Nummer1

In directory X wil ik een bestand met alle subdirectory's. Ook in Y. Maar ook gewoon in Album1 en Album2 onder X en Y.
Jouw optie 2 werkt alleen in Album1 en Album2, maar niet in X en Y.

Het bestand in X zou er zo uit moeten zien:
Album1\Nummer1.mp3
Album2\Nummer1.mp3

Als ik dat met dir /b doe ziet het er zo uit:
M:\Muziek\Band\X\Ablum1\Nummer1
M:\Muziek\Band\X\Ablum2\Nummer1

Die call zorgt ervoor dat M:\Muziek\Band eraf gehaald wordt. Maar zodra in b.v. Band een haakje sluiten zit, of in de bestandsnaam gaat het fout.
(En dat komt in de 20.000 bestanden verdeeld over 3000 mappen best veel voor)
 
De volgende code maakt vanuit een map een totale playlist van alles wat er in en onder staat qua .mp3 bestanden, met relatieve paden.
Ik begrijp dat je (ook) playlists wilt hebben in submappen, maar misschien kun je dat voor elkaar krijgen door iets te combineren van onderstaande met je eigen code.
Natuurlijk (eerst) testen of je de problemen waar je het in je startposting over had met onderstaande code niet hebt.

Code:
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if exist Playlist.m3u del Playlist.m3u
set mapnaam=%CD%\
for /f "tokens=* delims=" %%a in ('dir *.mp3 /o:n /b /a /s') do (
set file=%%a
echo !file:%mapnaam%=! >> Playlist.m3u
)

Succes,

Tijs.
 
Laatst bewerkt:
Dit werkt ongeveer hetzelfde als mijn batchfile.

Echter, ook deze kan niet omgaan met een haakje sluiten in de bestandsnaam of de map.

Maak maar eens een boompje aan volgens dit:
map\1\nr1.mp3
map\2\nr2.mp3

Zet dit bestand in \map\. Dit zal goed werken.

Maar hernoem nu 1 naar (1). Dan zal het fout gaan.
 
Ik geef een klein stukje van mijn .m3u bestand, waar wel degelijk bestanden staan met ( en )

Anderson, Bruford, Wakeman, Howe\Anderson, Bruford, Wakeman, Howe\08 - Order Of The Universe (i) Order Theme (ii) Rock Gives Courage (iii) It's So Hard To Grow (iv) The U - Anderson, Bruford, Wak.mp3
Alison Moyet\Alison Moyet - Singles 2CD\Alison Moyet - Singles CD2 (BonusCD, Live)\09 - Alison Moyet - Singles CD2 - Live - Nobody's diary.mp3

Dan jouw test als ik het batch-bestand uitvoer vanuit map:
1\nr(1).mp3
1\nr(2).mp3

Dan jouw test als ik het batch-bestand uitvoer vanuit de hoofdmap:
map\1\nr(1).mp3
map\1\nr(2).mp3

Ik kan het gedrag waar jij het over hebt dus niet reproduceren. Wat me wel opvalt is dat er overal een spatie staat aan het einde van elke (.mp3) regel in Playlist.m3u als ik mijn batch-file gebruik.

PS: Ik gebruik XP Home

Succes,

Tijs.
 
Laatst bewerkt:
Ander citaten, uit de Playlist.m3u gemaakt met mijn .bat bestand:
(2006)Enigma - A Posteriori\01 - Eppur si muove.mp3
DVDRips\Donna Summer - Live (1999)\Donna Summer - Live (1999, DVDRip)\10 Nobody - Donna Summer - Live (DVDRip).mp3

Ik zie dus geen probleem, ook niet als de mapnaam haakjes bevat.

Tijs.
 
Ik heb het zodanig opgelost dat ik alle mappen met een haakje erin maar heb hernoemd. Met de bestanden heeft 'ie inderdaad geen probleem. Wel vreemd, maar goed, zo opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan