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

Dateien mit von Leerzeichen befreiten Pfaden kopieren

Frage Entwicklung Batch & Shell

Mitglied: sysroy

sysroy (Level 1) - Jetzt verbinden

21.07.2009, aktualisiert 11:36 Uhr, 3386 Aufrufe, 6 Kommentare

Hallo zusammen,

ich brauche bitte Eure Hilfe.

Im Vorhinein: Die Batch soll auf Windows XP - PC's und Windows 2003 Server laufen.

Es geht um folgendes:

Ich brauche eine Batch, die ein Verzeichnis (z.B. d:\eigen Daten) komplett in ein neues Verzeichnis kopiert und dabei sämtliche Leerzeichen aus den Pfaden und Dateinamen entfernt. Quelle und Ziel sollten flexibel sein und als Parameter beim Aufruf übergeben werden können (Beispiel: DelSpaces.cmd "d:\eigene Daten" d:\neueDaten)

Beispielsweise sollte die Datei

d:\eigene Daten\Mein Test\Test der ersten Auflösung.bmp

dann unter

d:\neueDaten\MeinTest\TestdererstenAuflösung.bmp

oder (plus dem alten Pfad, wenn das einfacher ist)

d:\neueDaten\d_\eigeneDaten\MeinTest\TestdererstenAuflösung.bmp

wiederzufinden sein.

Kann mir jemand dabei helfen?
Mitglied: bastla
21.07.2009 um 12:10 Uhr
Hallo sysroy und willkommen im Forum!

Kaum getestet etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Eigene Daten" 
03.
set "Ziel=D:\neueDaten" 
04.
 
05.
for /f "delims=" %%i in ('dir /s /b /a-d "%Quelle%"') do set "Pfad=%%i" & call :CopyFile "%%i" 
06.
goto :eof 
07.
 
08.
:CopyFile 
09.
call set "PfadNeu=%%Pfad:%Quelle%=%%" 
10.
set "PfadNeu=%PfadNeu: =%" 
11.
xcopy %1 "%Ziel%%PfadNeu%*">nul 
12.
goto :eof
Um Quelle und Ziel als Aufrufparameter verwenden zu können, einfach die Zeilen 2 und 3 durch
set "Quelle=%~1" 
set "Ziel=%~2"
ersetzen. Der Quellpfad darf übrigens nicht mit einem "\" enden.

Grüße
bastla
Bitte warten ..
Mitglied: sysroy
21.07.2009 um 13:39 Uhr
Hallo Bastla,

funktioniert hervorragend!

Für mich zum Verständnis:
":CopyFile" kehrt wegen "Call" und dem "goto :eof " zum Aufrufsort in der For - Schleife zurück, oder?

Zweite Unklarheit:
09: call set "PfadNeu=%%Pfad:%Quelle%=%%" - warum CALL?

Vielen Dank erstmal
sysroy
Bitte warten ..
Mitglied: bastla
21.07.2009 um 13:47 Uhr
Hallo sysroy!
Für mich zum Verständnis:
":CopyFile" kehrt wegen "Call" und dem "goto :eof " zum Aufrufsort in der For - Schleife zurück, oder?
Ja; würde es auch ohne "goto :eof", wenn danach kein weiterer Batch-Code folgt, ist so aber "sauberer".

Zweite Unklarheit:
09: call set "PfadNeu=%%Pfad:%Quelle%=%%" - warum CALL?
Da zuerst die Variable %Quelle% aufgelöst werden muss, könnte entweder "delayedExpansion" verwendet oder eben die Verarbeitung in einer weiteren CMD-Instanz (aufgerufen durch "call") vorgenommen werden - durch die doppelten %-Zeichen um die Variable "Pfad" herum wird diese als Variable übergeben, während für %Quelle% bereits der Wert eingesetzt wird, also im Prinzip:
set "PfadNeu=%Pfad:D:\Eigene Daten=%"
Grüße
bastla
Bitte warten ..
Mitglied: sysroy
21.07.2009 um 13:52 Uhr
Hallo Bastla,

Trick gelernt (Call) - prima.

Letzt Frage:

Was ist der Unterschied in der Parameterauswertung zwischen <set "Quelle=%~1"> mit Tilde und
<set "Quelle=%1"> ohne Tilde?

Danke
sysroy
Bitte warten ..
Mitglied: bastla
21.07.2009 um 13:55 Uhr
Was ist der Unterschied in der Parameterauswertung zwischen <set "Quelle=%~1"> mit Tilde und
<set "Quelle=%1"> ohne Tilde?
Mit der Schreibweise
set "Quelle=%~1"
ist sicher gestellt, dass %1 keine umgebenden Anführungszeichen enthält - wenn ich solche brauche, setze ich sie später im Batch um %Quelle% herum ...

Grüße
bastla
Bitte warten ..
Mitglied: sysroy
21.07.2009 um 14:11 Uhr
Und ich habe mich für diesen Zweck bis jetzt damit "geplagt":

:: die " " aus den Parametern entfernen
set pt1=%1
set pt1=%pt1:"=%


Frage hat sich gelohnt....

Nochmal vielen Dank für die schnelle und gute Hilfe

Grüße
sysroy
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen im Pfad (4)

Frage von Jallio zum Thema Batch & Shell ...

Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

Batch & Shell
gelöst Nach bestimmten Ordner namen suchen und in einem anderem Pfad kopieren (8)

Frage von erdgnrft zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (19)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Windows Server
DC virtualisieren + wie sichern (SingleDC-Environment) (12)

Frage von KMUlife zum Thema Windows Server ...

Festplatten, SSD, Raid
RAID Controller mit Trim-Funktion, wie ermitteln (11)

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