cybercomm
Goto Top

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!

Content-Key: 75629

Url: https://administrator.de/contentid/75629

Printed on: April 20, 2024 at 12:04 o'clock

Member: bastla
bastla Dec 10, 2007 at 11:50:11 (UTC)
Goto Top
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:
for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /I "%%e" "%computername%"  

Grüße
bastla
Member: cybercomm
cybercomm Dec 10, 2007 at 12:09:54 (UTC)
Goto Top
Super! Danke!
Das Problem Leerzeichen ist gelöst.

Aber ... Wie bekomme ich am Zielort die Verzeichnisstruktur erstellt, da jetzt alle Dateien in ein Verzeichnis kopiert werden?

for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /E "%%e" "D:\Temp\%computername%"

Edit: die Unterordner der Ordner Eigene Dateien werden erstellt, jedoch sollen die übergeordneten Ordner auch erstellt werden:
zB.
Username1\Eigene Dateien
Username2\Eigene Dateien
usw.
Grüße
Member: bastla
bastla Dec 10, 2007 at 12:14:32 (UTC)
Goto Top
Hallo cybercomm!

for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy /S /E /I "%%e" "%computername%"  

Grüße
bastla
Member: cybercomm
cybercomm Dec 10, 2007 at 12:17:22 (UTC)
Goto Top
hatte oben noch editiert:

Edit: die Unterordner der Ordner Eigene Dateien werden erstellt, jedoch sollen die übergeordneten Ordner auch erstellt werden:
zB.
Username1\Eigene Dateien
Username2\Eigene Dateien
usw.
Grüße
Member: bastla
bastla Dec 10, 2007 at 12:26:32 (UTC)
Goto Top
Hallo cybercomm!

Dann solltest Du etwas anders ansetzen:
for /f "delims=" %%e in ('dir /b /ad "C:\Dokumente und Einstellungen"') do xcopy /S /E /I "C:\Dokumente und Einstellungen\%%e\Eigene Dateien" "%computername%\%%e\Eigene Dateien"  

Grüße
bastla
Mitglied: 58502
58502 Dec 10, 2007 at 12:37:20 (UTC)
Goto Top
@cybercomm

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. face-wink
Member: cybercomm
cybercomm Dec 10, 2007 at 12:57:27 (UTC)
Goto Top
Hallo,

@58502
for /f "delims=" %%e in ('dir /A:d /b /s "C:\*Eigene Dateien*"') do xcopy "%%e\..\..\*.*" /E "%computername%\"

Danke, funktionierte leider nicht, da hier alle Profildateien kopiert wurden (Desktop, Favoriten usw.)

folgende Variante funktioniert:

for /f "delims=" %%e in ('dir /b /ad "C:\User"') do xcopy /S /E /I "C:\User\%%e\Eigene Dateien" "C:\Temp\%computername%\%%e\Eigene Dateien"

kopiert die Eigenen Dateien inkl. Unterordner ins Ziel, mit separaten Ordnern, für jeden Benutzer.

Danke!
Mitglied: 58502
58502 Dec 10, 2007 at 13:00:10 (UTC)
Goto Top
Ok, dann habe ich das mit den "übergeordneten Ordnern" falsch interpretiert. face-wink
Es muss aber (unabhängig von Scripten und Fehlern face-wink ) sichergestellt sein, dass das Pofil auch immer unter C:\user liegt und die Nutzer die "Eigene Dateien" nicht verschoben oder umbenannt haben.
Member: bastla
bastla Dec 10, 2007 at 13:52:58 (UTC)
Goto Top
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 face-wink) 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
Mitglied: 58502
58502 Dec 10, 2007 at 13:58:21 (UTC)
Goto Top
@bastla

Hehe, hat dir wohl keine Ruhe gelassen. face-wink
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. face-smile))
Member: cybercomm
cybercomm Dec 10, 2007 at 13:59:11 (UTC)
Goto Top
Ok, dann habe ich das mit den
"übergeordneten Ordnern"
falsch interpretiert. face-wink
Es muss aber (unabhängig von Scripten
und Fehlern face-wink ) sichergestellt sein, dass
das Pofil auch immer unter C:\user liegt und
die Nutzer die "Eigene Dateien"
nicht verschoben oder umbenannt haben.


Ja, das ist klar. Das sollte sichergestellt sein.

Der nächste mögliche, aber nicht notwendige Step wäre, auf den lokalen Laufwerken c und D nach allen xls, doc,pdf,msg zu suchen, die innerhalb der letzten 6 Monate geändert/erstellt wurden und diese ebenfalls wegzusichern.

Nochmals Danke.