Ordner finden - auf Laufwerk kopieren - Problem - Ordner enthält Leerstellen
Hallo,
nach dem lesen vieler Anleitungen habe ich noch keine Lösung oder das problem gefunden.
Ich muss unter Windows 2000 Dateien per Batch lokal von mehreren PC´s auf eine USB HDD kopieren.
Es soll von allen Benutzern des PC´s als Administrator das Verzeichnis Eigene Dateien gesichert werden. Im zu erstellenden Verzeichnis %computername% sollen alle Ordner Eigene Dateien der Benutzer mit vollständigen Pfad angegelegt werden.
Problem:
Mittels dir habe ich eine Verzeichnisliste erstellt, die alle Ordner enthält. Das kopieren scheitert, da eine Leerstelle im Ordnernamen ist.
Hier der Inhalt:
for /f %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /I %%e %computername%
Fehlermeldung:
D:\Temp>xcopy /I C:\XP_PSB\Users\robin\Eigene D:\Temp\RESCUE_PSB
Datei Eigene nicht gefunden.
0 Datei(en) kopiert
Danke für Hilfe!
nach dem lesen vieler Anleitungen habe ich noch keine Lösung oder das problem gefunden.
Ich muss unter Windows 2000 Dateien per Batch lokal von mehreren PC´s auf eine USB HDD kopieren.
Es soll von allen Benutzern des PC´s als Administrator das Verzeichnis Eigene Dateien gesichert werden. Im zu erstellenden Verzeichnis %computername% sollen alle Ordner Eigene Dateien der Benutzer mit vollständigen Pfad angegelegt werden.
Problem:
Mittels dir habe ich eine Verzeichnisliste erstellt, die alle Ordner enthält. Das kopieren scheitert, da eine Leerstelle im Ordnernamen ist.
Hier der Inhalt:
for /f %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /I %%e %computername%
Fehlermeldung:
D:\Temp>xcopy /I C:\XP_PSB\Users\robin\Eigene D:\Temp\RESCUE_PSB
Datei Eigene nicht gefunden.
0 Datei(en) kopiert
Danke für Hilfe!
Please also mark the comments that contributed to the solution of the article
Content-Key: 75629
Url: https://administrator.de/contentid/75629
Printed on: April 20, 2024 at 12:04 o'clock
11 Comments
Latest comment
Hallo cybercomm und willkommen im Forum!
Generelle Vorgangsweise in derartigen Fällen: Dateinamen / Pfade mit enthaltenen Leerzeichen in Anführungszeichen einschließen. Da außerdem noch eine "for"-Schleife (welche Leerzeichen und Tabs als "delimiter", also Trennzeichen betrachtet) beteiligt ist, musst Du mit "delims=" dafür sorgen, dass keine Trennung erfolgt.
Daher sollte es so gehen:
Grüße
bastla
Generelle Vorgangsweise in derartigen Fällen: Dateinamen / Pfade mit enthaltenen Leerzeichen in Anführungszeichen einschließen. Da außerdem noch eine "for"-Schleife (welche Leerzeichen und Tabs als "delimiter", also Trennzeichen betrachtet) beteiligt ist, musst Du mit "delims=" dafür sorgen, dass keine Trennung erfolgt.
Daher sollte es so gehen:
for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /I "%%e" "%computername%"
Grüße
bastla
@cybercomm
Versuche das mal:
Du musst dich zur Ausführung aber entweder auf dem USB-Laufwerk befinden, oder zu %computername% noch den entsprechenden Laufwerksbuchstaben voranstellen.
@bastla
Der Xopy-Parameter /E schließt /S ein. Ein Backslash am Ende des Ziel-Verzeichnisnamens legt das Verzeichnis auch an, der Parameter /I erübrigt sich damit.
Anhand der Fehlermeldung lässt sich erkennen, dass eben nicht "Dokumente und Einstellungen" verwendet wird.
Versuche das mal:
for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy "%%e\..\..\*.*" /E "%computername%\"
Du musst dich zur Ausführung aber entweder auf dem USB-Laufwerk befinden, oder zu %computername% noch den entsprechenden Laufwerksbuchstaben voranstellen.
@bastla
Der Xopy-Parameter /E schließt /S ein. Ein Backslash am Ende des Ziel-Verzeichnisnamens legt das Verzeichnis auch an, der Parameter /I erübrigt sich damit.
Anhand der Fehlermeldung lässt sich erkennen, dass eben nicht "Dokumente und Einstellungen" verwendet wird.
Ok, dann habe ich das mit den "übergeordneten Ordnern" falsch interpretiert.
Es muss aber (unabhängig von Scripten und Fehlern ) sichergestellt sein, dass das Pofil auch immer unter C:\user liegt und die Nutzer die "Eigene Dateien" nicht verschoben oder umbenannt haben.
Es muss aber (unabhängig von Scripten und Fehlern ) sichergestellt sein, dass das Pofil auch immer unter C:\user liegt und die Nutzer die "Eigene Dateien" nicht verschoben oder umbenannt haben.
Hallo cybercomm und siebenstein!
Damit die Bedingung, dass das Profil "auch immer unter C:\user liegt" zumindest auf "sich auf Laufwerk C: befindet" abgeschwächt werden kann, würde (unter Berücksichtigung von siebenstein's Hinweisen ) der Batch etwa so aussehen:
Grüße
bastla
Damit die Bedingung, dass das Profil "auch immer unter C:\user liegt" zumindest auf "sich auf Laufwerk C: befindet" abgeschwächt werden kann, würde (unter Berücksichtigung von siebenstein's Hinweisen ) der Batch etwa so aussehen:
@echo off & setlocal
set "Quelle=Eigene Dateien"
set "Ziel=%computername%"
for /f "delims=" %%e in ('dir /s /b /ad "C:\*%Quelle%*"') do call :ProcessFolder "%%e"
goto :eof
:ProcessFolder
set "U=%~dp1"
set "U=%U:~0,-1%"
for /f "delims=" %%i in ("%U%") do set "User=%%~nxi"
xcopy /E %1 "%Ziel%\%User%\%Quelle%\"
Grüße
bastla
@bastla
Hehe, hat dir wohl keine Ruhe gelassen.
Dann hätte ich auch noch was als Ansatz: Ich würde %userprofile% auswerten, den Benutzernamen eliminieren und ausgehend davon die "Eigenen Dateien" suchen und kopieren.
Dann "bastla" mal schön. ))
Hehe, hat dir wohl keine Ruhe gelassen.
Dann hätte ich auch noch was als Ansatz: Ich würde %userprofile% auswerten, den Benutzernamen eliminieren und ausgehend davon die "Eigenen Dateien" suchen und kopieren.
Dann "bastla" mal schön. ))