pbelcl
Goto Top

Batch funktioniert nicht mit Leerzeichen in Variablen

Ich brings irgendwie nicht hin eine Variable mit einem Leerzeichen zu übergeben

Ich habe ein Batch laufen das funktioniert bestens.

@echo off
rem chcp 1252

rem Playliste deren Inhalt kopiert werden soll (ohne Pfad!)
SET liste=Fotos

rem PLS ist der Pfad der Playlist Dateien
SET PLS=%Workdir%\Fotoalben\

rem Zielpfad der Dateien
SET "ZielPfad=p:\CD's\3 - Pocket PC Speicherkarten\My Documents\Eigene Bilder\%liste%"  

if exist "%ZielPfad%" rd "%ZielPfad%" /s /q>nul  
pause
if not exist "%ZielPfad%" md "%ZielPfad%"  
pause
echo. 
echo Dateien fuer %liste% werden kopiert, bitte um etwas Geduld ......
echo.

FOR /F "eol=; delims=" %%i in (%PLS%%liste%.m3u) do (  
echo copy "%%i" "%zielpfad%\%%~nxi"  
if Exist "%%i" copy "%%i" "%zielpfad%\%%~nxi" /v /y>nul   
rem if EXIST %%i echo kopiere:  %%i 
rem if NOT EXIST %%i echo %%i --- fehlt!>>"%zielpfad%\0_fehlende_Dateien.txt"   
)


Leider sind jetzt einige Dateien dazugekommen die Lerrzeichen habe und ich hab versucht diese in die Variable Liste einzutragen:
also statt:
SET liste=Fotos

neu
SET liste=Bodypainting 2009

Seitdem kann mein Batch irgendwo in der Zeile 21. oder 22. den Dateinamen nicht mehr auflösen.
Ich bekomme eine Fehlermeldung:

Die Datei "p:\Progs\Batch\Fotoalben\Bodypainting" kann nicht gefunden werden.  

Das heißt er versucht die Datei nur bis zum ersten Space aufzulösen.

Ich hab schon rumprobiert die Variable in Kommas zu setzen, allerdings bekomm ich die dann wieder nicht raus ;-(

Hat irgendwer eine Ahnung was ich falsch mache?
Oder einen Tipp für mich ??

Content-Key: 133834

Url: https://administrator.de/contentid/133834

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: 60730
60730 19.01.2010 um 15:45:05 Uhr
Goto Top
[ ..............................................................................................]
Mitglied: mayho33
mayho33 19.01.2010 um 15:50:19 Uhr
Goto Top
Hi!

Am besten klammerst du deinen Pfad ein. Da in Variablen nicht explizit geklammert wird kannst du das so erzwingen:


chr(34) + "c:\mein pfad mit leerzeichen\ und noch mehr" + chr(34)

chr(34) = ein Anführungszeichen

grüße!

mayho
Mitglied: bastla
bastla 19.01.2010 um 16:07:35 Uhr
Goto Top
... bzw etwas genauer:
FOR /F "usebackq delims=" %%i in ("%PLS%%liste%.m3u") do (
Grüße
bastla
Mitglied: Biber
Biber 19.01.2010 um 16:12:20 Uhr
Goto Top
<OT>
..an der Sammlung "Bodypainting 2009" hätte ich evtl. auch Interesse..
</OT>
Mitglied: pbelcl
pbelcl 19.01.2010 um 17:45:29 Uhr
Goto Top
Zitat von @bastla:
FOR /F "usebackq delims=" %%i in ("%PLS%%liste%.m3u") do (
> 
Danke bastla,
Dein Tipp hat, wie immer SOFORT funktioniert!!!

Nur mal eine Frage, weil ich's ja auch verstehen will:

was hat es mit "usebackq" auf sich ??
Ich habs in der Hilfe unter FOR /? zwar gelesen, aber anhand der Beschreibung dort eher umgekehrt verstanden!

Setzt der Befehl Variablen in "automatische" Anführungszeichen die dann wieder verschwinden wenn sie im Weg sind?
Sorry für den Satz, aber ich hab in meiner Unwissenheit keinen besseren face-wink
Mitglied: pbelcl
pbelcl 19.01.2010 um 17:49:00 Uhr
Goto Top
Zitat von @Biber:
..an der Sammlung "Bodypainting 2009" hätte ich evtl. auch Interesse..
Leider kann ich mit "2009" nicht dienen, weil ich dieses Jahr keine Zeit hatte!
Aber wenn dich andere Jahre auch interessieren, dann schau mal auf mein Fotoportal face-wink
Mitglied: bastla
bastla 19.01.2010 um 18:31:48 Uhr
Goto Top
Hallo pbelcl!
was hat es mit "usebackq" auf sich ??
Kurzfassung: Ohne "usebackq" würde "%PLS%%liste%.m3u" als zu zerlegender Text, nicht als Pfad zu einer Datei, die zeilenweise ausgelesen werden soll, interpretiert ...

Beispiel (für die Direkteingabe, daher jeweils nur ein "%"-Zeichen):
for /f "tokens=1-4 delims=-" %a in ("124-452-668-743") do @echo %a_%d_%b_%c
Grüße
bastla
Mitglied: pbelcl
pbelcl 19.01.2010 um 18:54:40 Uhr
Goto Top
Ach so, ich glaube ich verstehe ....
Danke auch hier nochmal für deine Hilfe und Mühe!!
lg
Paul
Mitglied: Biber
Biber 19.01.2010 um 20:16:39 Uhr
Goto Top
<OT ii>
Moin, pbelcl,

vielen Dank für den Link - erstaunlich, was sich mit dezentem Make-Up doch erreichen lässt.
Den nächsten World Bodypainting Festival-Termin sollte ich mir wohl vormerken.

Und der Frau von meinem Cheffe geb' ich morgen mal den Tipp mit der Typberatung.... vielleicht räumt die ja den Special Effects Make Up Award 2010 ab
Muss ich nur irgendwie diplomatisch formulieren...

Grüße und danke
Biber
</OT ii>