Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch funktioniert nicht mit Leerzeichen in Variablen

Frage Entwicklung Batch & Shell

Mitglied: pbelcl

pbelcl (Level 1) - Jetzt verbinden

19.01.2010 um 15:41 Uhr, 14700 Aufrufe, 9 Kommentare

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

Ich habe ein Batch laufen das funktioniert bestens.

01.
@echo off 
02.
rem chcp 1252 
03.
 
04.
rem Playliste deren Inhalt kopiert werden soll (ohne Pfad!) 
05.
SET liste=Fotos 
06.
 
07.
rem PLS ist der Pfad der Playlist Dateien 
08.
SET PLS=%Workdir%\Fotoalben\ 
09.
 
10.
rem Zielpfad der Dateien 
11.
SET "ZielPfad=p:\CD's\3 - Pocket PC Speicherkarten\My Documents\Eigene Bilder\%liste%" 
12.
 
13.
if exist "%ZielPfad%" rd "%ZielPfad%" /s /q>nul 
14.
pause 
15.
if not exist "%ZielPfad%" md "%ZielPfad%" 
16.
pause 
17.
echo.  
18.
echo Dateien fuer %liste% werden kopiert, bitte um etwas Geduld ...... 
19.
echo. 
20.
 
21.
FOR /F "eol=; delims=" %%i in (%PLS%%liste%.m3u) do ( 
22.
echo copy "%%i" "%zielpfad%\%%~nxi" 
23.
if Exist "%%i" copy "%%i" "%zielpfad%\%%~nxi" /v /y>nul  
24.
rem if EXIST %%i echo kopiere:  %%i  
25.
rem if NOT EXIST %%i echo %%i --- fehlt!>>"%zielpfad%\0_fehlende_Dateien.txt"  
26.
27.
 

Leider sind jetzt einige Dateien dazugekommen die Lerrzeichen habe und ich hab versucht diese in die Variable Liste einzutragen:
also statt:
01.
SET liste=Fotos
neu
01.
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:

01.
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 ??
Mitglied: mayho33
19.01.2010 um 15:50 Uhr
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
Bitte warten ..
Mitglied: bastla
19.01.2010 um 16:07 Uhr
... bzw etwas genauer:
FOR /F "usebackq delims=" %%i in ("%PLS%%liste%.m3u") do (
Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.01.2010 um 16:12 Uhr
<OT>
..an der Sammlung "Bodypainting 2009" hätte ich evtl. auch Interesse..
</OT>
Bitte warten ..
Mitglied: pbelcl
19.01.2010 um 17:45 Uhr
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
Bitte warten ..
Mitglied: pbelcl
19.01.2010 um 17:49 Uhr
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
Bitte warten ..
Mitglied: bastla
19.01.2010 um 18:31 Uhr
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
Bitte warten ..
Mitglied: pbelcl
19.01.2010 um 18:54 Uhr
Ach so, ich glaube ich verstehe ....
Danke auch hier nochmal für deine Hilfe und Mühe!!
lg
Paul
Bitte warten ..
Mitglied: Biber
19.01.2010 um 20:16 Uhr
<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>
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Variable setzten mit Leerzeichen (3)

Frage von Marlon1 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...