Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge

Batch variablen mit Leerzeichen ohne " ausgeben

user_310340 / 9 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
dalai Nachtrag zu: „ Maskiere sie, entweder mit Anführungszeichen um den gesamten Parameter...“
Optionen

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

Echte Hilfe kann´s nur bei Rückmeldungen geben.
bei Antwort benachrichtigen