Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Prozentzeichen im Dateipfad macht Ärger

Frage Entwicklung Batch & Shell

Mitglied: sysroy

sysroy (Level 1) - Jetzt verbinden

23.07.2009, aktualisiert 10:54 Uhr, 6612 Aufrufe, 6 Kommentare

Hallo miteinander,

OS: Win XP und Win Server 2003

Mein Problem sind Sonderzeichen (z.B. Prozentzeichen "%", kaufmännisches UND "&") in Datei- und Ordnernamen, die beim automatischen Kopieren von Dateien nicht mit gelesen werden und dann zu "Datei nicht gefunden..." - Fehlern führen.

Ich habe zwar den Beitrag "Übergabe von Variabeln die Prozentzeichen enthalten per call" gelesen aber es hat mich nicht weitergebracht - vermutlich nicht richtig verstanden .

Das Problem steht im Zusammenhang mit meiner vorherigen Frage (Verzeichnisstrukturen automatisch so umkopieren, dass in der Kopie keine Leerzeichen mehr in den Ordner- und Dateinamen sind Dateien mit von Leerzeichen befreiten Pfaden kopieren), zu der mir Bastla folgenden Quellcode geschickt hat, der normalerweise auch funktioniert:

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
In der Zeile

01.
call set "PfadNeu=%%Pfad:%Quelle%=%%"
oder

01.
set "PfadNeu=%PfadNeu: =%"
erfolgt der Verlust des %-Zeichens


Frage: Wie kann der Code geändert werden, dass die Dateipfade mit diesen Sonderzeichen erhalten bleiben??

Danke
sysroy
Mitglied: rubberman
23.07.2009 um 14:45 Uhr
Nur mal ein Tip, ohne dass ich mir das scho näher angesehen hätte. Vermutlich sind die beiden von dir verdächtigten Zeilen nicht die Übeltäter, sondern vielmehr der Parameter %%i (alias %1 in deiner Subroutine). Versuche dort mal mit der Variablen "%Pfad%" zu arbeiten.
Bitte warten ..
Mitglied: sysroy
24.07.2009 um 08:33 Uhr
Nein rubberman,

das war's nicht.

Übrigens wird in meinem Browser die Zeile 05 dargestellt als wären da zwei Aufrufe "Call: Copyfile", im Quelltext sieht man es aber richtig.
Bitte warten ..
Mitglied: rubberman
24.07.2009 um 21:38 Uhr
Hmm, was ich meinte sieht so aus:
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 
06.
goto :eof 
07.
 
08.
:CopyFile 
09.
call set "PfadNeu=%%Pfad:%Quelle%=%%" 
10.
set "PfadNeu=%PfadNeu: =%" 
11.
xcopy "%Pfad%" "%Ziel%%PfadNeu%*">nul 
12.
goto :eof
Sollte doch eigentlich funktionieren?!
Bitte warten ..
Mitglied: bastla
24.07.2009 um 22:03 Uhr
Hallo sysroy!

Da das Prozentzeichen beim Speichern des Pfades ohne Leerzeichen in die Variable %PfadNeu% verloren geht, sollte dieses Speichern vermieden werden; zusätzlich kann, wie auch rubberman schon erwähnt hat, auch der Parameter %1 durch %Pfad% ersetzt werden (haben den selben Inhalt, aber eine unterschiedliche Anzahl von Prozentzeichen im Variablennamen bzw sind unterschiedliche Arten von Variablen):
01.
:CopyFile 
02.
call set "PfadNeu=%%Pfad:%Quelle%=%%" 
03.
xcopy "%Pfad%" "%Ziel%%PfadNeu: =%*">nul 
04.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: sysroy
27.07.2009 um 10:36 Uhr
Hallo rubberman, hallo Bastla,

war das Wochende weg, deshalb erst heute die Anwort.

Es funktioniert genau so, wie rubberman es angibt - keine Ahnung, was ich beim ersten Versuch falsch gemacht habe .

Vielen Dank an Euch Beide

sysroy
Bitte warten ..
Mitglied: pieh-ejdsch
29.07.2009 um 01:35 Uhr
der Verlust des Prozentzeichens erfolgt nicht bei Zeile 09 oder 10 sondern weil in Zeile 05 hinter dem CALL die Variable Übergeben wird
es war ein bischen kniffliger, da die Forschleife eine Variable beim Übergeben in eine Subroutine als Parameter nicht mit den Prozentzeichen übergibt, sondern dieses einfach entfernt.
das bedeuted, sobald Du eine Variable mit dem Prozentzeichen in eine Subroutine schickst wird das Prozentzeichen entfernt es wird zwar noch hinter dem CALL mit angezeigt aber bei der Parameterübergabe haperts...
Ob daran nun die Subroutine schuld ist ....?? die Verzögerte Variablenauflösung ändert jedenfalls an dieser Sache auch nichts. Ach ja - der Bill weiss es bestimmt - warum...
also ist Deine eigentliche Zeile 11 Schuld an der ganzen Miesere.

Dein & macht so eigentlich gar keine Probleme, da Du ja die Gänsefüsschen drumrum gefriemelt hast.
nur wenn Du Deine Variable Ohne Gänsefüsschen weiterverarbeiten willst, dann brauchst Du diese Zusatzzeile mit der Variablenumschreibung. Du musst also schon vorher wissen ob die Gänsefüsschen gebraucht werden oder nicht.
bei Dateinamen mit Leerzeichen brauchst Du ja ohnehin die Federviehlatschenfüller.


01.
@ echo off 
02.
for /f "delims=" %%i in ('dir /s /b /a-d "D:\Eigene Daten"') do set "pfad=%%i" & call :CopyFile 
03.
goto :eof 
04.
:CopyFile 
05.
set "pfadneu=D:\neue%pfad:~10%" 
06.
xcopy "%pfad%" "%pfadneu: =%*">nul
Gruß Phil
[Edit] ups ist ja schon beantwortet naja steht halt nochmehr da...[/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateipfad ausgeben (2)

Frage von tegwert zum Thema Batch & Shell ...

Windows Server
Macht ein Server bei uns Sinn? (12)

Frage von Southtown zum Thema Windows Server ...

Windows 10
gelöst Notebook macht sehr viel Traffic (9)

Frage von DeathNote zum Thema Windows 10 ...

Windows Server
Windows Server Firewall - Wie macht ihr das? (14)

Frage von twisters zum Thema Windows Server ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...