onlinebroker

Kopieren von Dateien mit Leerzeichen aus Dateiliste

Hallo!

Ich habe ein Batch geschrieben mit dem ich Datensätze von einem Rechner auf ein Netzlaufwerk kopieren möchte um diese in einem Archivsystem zu speichern.
Es werden zunächst Dateien versch. Unterverzeichnisse mit der Erweiterung .xyz in eine Datei gespeichert. Diese Dateien können auch Leerzeichen enthalten und dienen als Basis für die spätere Kopieroperation, bei der Dateien mit der Endung .xyz und mit gleichem Namen aber verschiedener Dateierweiterungen kopiert werden.
Mit folgendem Befehl wurde bisher probiert den Kopiervorgang durchzuführen. Wobei die Datei tmp_file mit dem Befehl forfiles(Speicherung inkl. Anführungszeichen) befüllt wurde.
for /F %%i in (%tmp_file%) do xcopy %src_dir%%%~pni.* %save_dir%\ /D /V /F /Y >> %log_file% 2>>&1
Habe schon versucht ausschließlich eine der Dateien mit dem Befehl xcopy zu kopieren, mit Erfolg. Auch die Datei mit dem dir-Befehl aufzubauen und im oben aufgeführten Befehl die Quelldatei mit der Endung .xyz in Anführungszeichen zu kopieren führte nicht zum Erfolg.
Fragestellung:
1. Beim Kopieren der Dateien mit Leerzeichen im Namen wird die Datei bzw. der Pfad beim Leerzeichen abgeschnitten. Wie muss die for-Schleife verändert werden bzw. was gäbe es für weitere Möglichkeiten.
2. Abgesehen von den Dateien mit Leerzeichen werden bestimmte Dateien nicht kopiert, obwohl in der Logfile vermerkt ist, dass diese kopiert wurden.

Bsp. %tmp_file%:
"\Pfad\12345.xyz"
"\Pfad\12 345.xyz"
"\Pfad\123 45.xyz"

Für Hilfe bzw. Ideen bin ich dankbar.

MfG
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 61109

Url: https://administrator.de/forum/kopieren-von-dateien-mit-leerzeichen-aus-dateiliste-61109.html

Ausgedruckt am: 04.06.2025 um 14:06 Uhr

miniversum
miniversum 12.06.2007 um 09:15:31 Uhr
Goto Top
Die Dateinamen werden Abgeschnitten, weil du die delims nicht gesetzt hast. Dadurch wird per Default das Leerzeichen als Trennzeichen benutzt. Willst du also in deiner For-Schleife Listen auslesen die Leerzeichen enthalten must du die delims imemr aus nichts setzen.
Des Weiteren werden durch das verwenden des ~ in %%~pni.* die ", die zwar in der Datei stehen, mit abgeschnitten. Dies mußt du auch wieder ausgleichen. So ergibt sich dann folgendes:

for /F "delims=" %%i in (%tmp_file%) do xcopy "%src_dir%%%~pni.*" "%save_dir%\" /D /V /F /Y >> %log_file% 2>>&1

miniversum
Biber
Biber 17.06.2007 um 00:42:34 Uhr
Goto Top
Moin onlnebroker,

Für Hilfe bzw. Ideen bin ich dankbar.
Und ich immer für eine Rückmeldung... face-wink
Ist das Problem durch miniversums Antwort gelöst worden?

Grüße
Biber
onlinebroker
onlinebroker 18.06.2007 um 07:43:19 Uhr
Goto Top
Mogähn,

die Lösung von miniversum hat wunderbar funktioniert.
Dank an miniversum für die schnelle Hilfe.

Gruß

onlinebroker
wowka86
wowka86 23.03.2008 um 01:11:33 Uhr
Goto Top
abend...

nur ne frage zum verständniss...

wo kriege ich das "src_dir" her?? muss das nicht, so wie ich es verstanden habe, aus einet temporären datei kommen?
miniversum
miniversum 23.03.2008 um 10:51:33 Uhr
Goto Top
Die gepostete Zeile umdie es hier ging ist nur ein teil einer Batch.
Die Variable %src_dir% muß vorher difiniert werden. Ob die aus einer Datei kommt oder einfach so zuvor über einen set Befehl festgelegt wurde ist egal.
Das gleiche gilt auch für %tmp_file%, %save_dir% und %log_file%
wowka86
wowka86 23.03.2008 um 14:25:10 Uhr
Goto Top
ach so ok
danke schön

aber eine frage hätte ich doch noch und zwar wenn die adresse und der Dateiname schon in der liste vorhanden sind, wie kann ich die zum kopieren auslesen?
also damit die batch die datei mit dem namen, der in der liste steht, auf zb eine andere festplatte kopiert.
miniversum
miniversum 23.03.2008 um 19:09:26 Uhr
Goto Top
Das pasiert mit den For Befehl.
for /F "delims=" %%i in (Datei.txt) do echo %%i
würde die datei "Datei.txt" auslesen und den Inhalt zeilenweise ausgeben. Dabei steht in dem Fall in der Variablen %%i jeweils eine Zeile in der Datei.
Stehen also Dateinamen drin werden diese ausgelesen.
Genaueres zum For Befehl (oder andern) indem du in der Eingabeaufforderung
for /?
eingibst.