Hallo Leutz
ich möche an eine Batchdatei Datei und Verzeichnissnamen übergeben die Leerzeichen enthalten,
dass das mit batch "langer Dateiname 1" "Verz 1" also doppelte Anführungszeichen geht ist mir soweit klar.
Wenn ich aber nun die Variablen mit z.B.
ECHO dir "%2\%1" >> neu.txt
in eine neue Datei schreibe werden die Anführungszeichen mit eingefügt
und der Inhalt sieht dann so aus
dir ""Verz 1"\"langer Dateiname 1""
wie kann ich die Anführungszeichen aus den Variablen unterdrücken damit ich
dir "Verz 1\langer Dateiname 1"
erhalte ?
schonmal Danke fürs lesen
clag
Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge
Ich merke gerade, dass das auch nicht funktionieren dürfte. Das Problem ist, dass in der for-Schleife die Variable %~2 ohne Anführungszeichen ausgegeben werden muss, denn die sind ja nicht gewünscht in der Playlist. Das führt dazu, dass runde Klammern in %~2 als Syntax ausgewertet werden und nicht dem echo als Ausgabeobjekt dienen.
Es gibt diese Lösungsmöglichkeiten:
- runde Klammern durch eckige oder geschweifte ersetzen, also Datei-/Verzeichnisnamen ändern
- Skript ändern
- Skriptsprache wechseln
Skript ändern hieße z.B., die Schleife so umzubauen:
for /F "tokens=*" %%g IN ('dir /b /on "%~1\%~2\*.mp3"') DO echo %~2\%%g >> "%~1\-play-...%~2.m3u"
Das muss alles auf einer Zeile stehen! Also letztlich nur die Klammern um den echo-Befehl entfernen, alles andere bleibt, wie es ist. Das geht aber nur solange, wie innerhalb der Schleife nur ein Befehl steht. Sobald man mehrere Befehle abarbeiten muss (die zeilenweise getrennt sind), müsste man dann auf ein CALL eines Sprungzieles umsteigen, um die runden Klammern zu vermeiden. Machbar, aber aufwendig.
Skriptsprache ändern hieße, z.B. AutoIt zu verwenden. Ich könnte dir da im Zweifel was zusammenbauen, wenn du Bedarf hast. Aber soweit sind wir ja noch nicht, denke ich.
MfG Dalai