Top-Themen

Aktuelle Themen (A bis Z)

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, 3394 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
If Exists auf Datei in Pfad mit Leerzeichen?
Frage von TheRealErebosBatch & Shell6 Kommentare

Hallo, ich habe ein Problem mit einem Batch. Ich möchte gerne prüfen ob Datei 1 nicht mehr vorhanden ist ...

Batch & Shell
Leerzeichen im Pfad
Frage von JallioBatch & Shell4 Kommentare

Hallo erneut, ich werde hier echt noch zum Stammkunden Wenn ich den Befehl $body in der WindowsPowerShell ISE ausführe, ...

Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Batch & Shell
Pfad mit versteckten Ordner und Leerzeichen
gelöst Frage von dax4funBatch & Shell18 Kommentare

Hallo, attrib s -r -h C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk set link=C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk Ich will aus Bsp. D: die rasphone.pbk reinkopieren stehe ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 1 StundePerl1 Kommentar

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 2 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 108 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless11 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...