Nervige Frage Datei oder Verzeichnis bei xcopy
Habe wieder einmal eine Frage.
In einer Batchdatei soll eine einzige Datei aus einem Verzeichnis zur Sicherung auf einen anderen Datenträger kopiert werden.
Da das ganze in einer Batchdatei ablaufen soll, und eventuell auch mehrere Dateien oder Verzeichnisse mitkopiert werden sollen, werden die Parameter /e /h /r mitverwendet.
Der Parameter /y soll die Abfrage für das Überscheiben unterbinden.
Das klappt auch, so lange in im Zielverzeichnis die Datei schon besteht.
Ist das Zielverzeichnis leer oder gar nicht vorhanden, kommt die blöde Meldung, ob das Ziel eine Datei oder ein Verzeichnis ist.
In der Hilfe gibt es keinen Parameter zur Unterdrückung dieser Abfrage.
Im Internet habe ich keine Hilfe dazu gefunden, außer ich soll Robocopy verwenden.
Um die lästige Abfrage bei Verzeichnissen zu unterdrücken, gibt es den Parameter I
Ich finde aber nirgends einen Parameter, mit dem ich xcopy mitteile, daß da Ziel eine Datei und kein Verzeichnis ist.
Lasse ich bei Ziel den Dateinamen weg, kopiert xcopy den kompletten Verzeichnisinhalt und nicht nur die gewünschte Datei.
Bitte um Hilfe
Danke im voraus
Gerry
In einer Batchdatei soll eine einzige Datei aus einem Verzeichnis zur Sicherung auf einen anderen Datenträger kopiert werden.
xcopy "C:\ProgramData\verzeichnis\verzeichnis2\datei.txt" %bname%":\sicherung\datum\verzeichnis\verzeichnis2\datei.txt" /e /h /r /y
Der Parameter /y soll die Abfrage für das Überscheiben unterbinden.
Das klappt auch, so lange in im Zielverzeichnis die Datei schon besteht.
Ist das Zielverzeichnis leer oder gar nicht vorhanden, kommt die blöde Meldung, ob das Ziel eine Datei oder ein Verzeichnis ist.
In der Hilfe gibt es keinen Parameter zur Unterdrückung dieser Abfrage.
Im Internet habe ich keine Hilfe dazu gefunden, außer ich soll Robocopy verwenden.
Um die lästige Abfrage bei Verzeichnissen zu unterdrücken, gibt es den Parameter I
Ich finde aber nirgends einen Parameter, mit dem ich xcopy mitteile, daß da Ziel eine Datei und kein Verzeichnis ist.
Lasse ich bei Ziel den Dateinamen weg, kopiert xcopy den kompletten Verzeichnisinhalt und nicht nur die gewünschte Datei.
xcopy "C:\ProgramData\verzeichnis\verzeichnis2\datei.txt" %bname%":\sicherung\datum\verzeichnis\verzeichnis2\" /e /h /r /y
Bitte um Hilfe
Danke im voraus
Gerry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 668815
Url: https://administrator.de/contentid/668815
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
9 Kommentare
Neuester Kommentar
In einer Batchdatei soll eine einzige Datei aus einem Verzeichnis zur Sicherung auf einen anderen Datenträger kopiert werden.
Das nennt man Brett vorm Kopf => copy
Hallo,
ich bin nur am Smartphone daher nicht getestet aber
/i geht davon aus dass alles was nicht existiert ein Verzeichnis ist. Da /e verwendet wurde werden auch alle Unterverzeichnisse kopiert./h kopiert hidden files und systemdateien mit. /y überschreibt vorhandene files.
/r könnte mit rein wenn es schreibgeschützte dateien gibt
Ich habe es auf das Verzeichnis geändert da die Anforderung sich widerspricht:
Wenn das nicht hilft und es unbedingt per batch sein muss, dann hilft eine for each schleife
oder gleich powershell
ich bin nur am Smartphone daher nicht getestet aber
xcopy C:\ProgramData\verzeichnis\verzeichnis2 %bname%:\sicherung\datum\verzeichnis\verzeichnis2 /e /h /i /y
/r könnte mit rein wenn es schreibgeschützte dateien gibt
Ich habe es auf das Verzeichnis geändert da die Anforderung sich widerspricht:
In einer Batchdatei soll eine einzige Datei...
Da das ganze in einer Batchdatei ablaufen soll, und eventuell auch mehrere Dateien oder Verzeichnisse mitkopiert werden sollen
Wenn das nicht hilft und es unbedingt per batch sein muss, dann hilft eine for each schleife
@echo off
setlocal
set source=C:\ProgramData\verzeichnis\verzeichnis2
set destination=%bname%:\sicherung\datum\verzeichnis\verzeichnis2
for %%F in ("%source%\*") do (
xcopy "%%F" "%destination%\%%~nF" /E /H /I /Y
)
endlocal
Moin,
natürlich funktioniert das.
Das habe ich als Struktur angelegt, die Quelldatei besteht. Dann einfach das Zielverzeichnis, und gut ist.
Natürlich ohne /e, weil es ja um eine Datei, nicht um eine Verzeichnisstruktur geht.
Diese Variante fragt:
Aber das ist auch das dokumentierte Verhalten von xcopy. Und bei einer einzelnen Datei auch sinnentleert.
Nein, das tut es nicht. Du machst da etwas falsch.
Im Übrigen sind die Anführungszeichen, jedenfalls in diesem Code, falsch. Sie müssen alles umschließen und daher nicht nach %bname% beginnen.
Gruß
DivideByZero
natürlich funktioniert das.
xcopy "C:\ProgramData\verzeichnis\verzeichnis2\datei.txt" "A:\sicherung\datum\verzeichnis\verzeichnis2\" /h /r /y
Das habe ich als Struktur angelegt, die Quelldatei besteht. Dann einfach das Zielverzeichnis, und gut ist.
Natürlich ohne /e, weil es ja um eine Datei, nicht um eine Verzeichnisstruktur geht.
Diese Variante fragt:
xcopy "C:\ProgramData\verzeichnis\verzeichnis2\datei.txt" "A:\sicherung\datum\verzeichnis\verzeichnis2\datei.txt" /h /r /y
Aber das ist auch das dokumentierte Verhalten von xcopy. Und bei einer einzelnen Datei auch sinnentleert.
Lasse ich bei Ziel den Dateinamen weg, kopiert xcopy den kompletten Verzeichnisinhalt und nicht nur die gewünschte Datei.
xcopy "C:\ProgramData\verzeichnis\verzeichnis2\datei.txt" %bname%":\sicherung\datum\verzeichnis\verzeichnis2\" /e /h /r /y
Nein, das tut es nicht. Du machst da etwas falsch.
Im Übrigen sind die Anführungszeichen, jedenfalls in diesem Code, falsch. Sie müssen alles umschließen und daher nicht nach %bname% beginnen.
Gruß
DivideByZero
Huhu,
kannst Du mal probieren, ein "*" hinter dem Zielnamen anzugeben? Dann müsste der nicht fragen. Also so etwa:
Gefunden habe ich es hier: ss64.com/nt/xcopy.html (Abschnitt "Copy a single file")
Liebe Grüße, Andy
kannst Du mal probieren, ein "*" hinter dem Zielnamen anzugeben? Dann müsste der nicht fragen. Also so etwa:
xcopy quelle.txt ziel.txt*
Gefunden habe ich es hier: ss64.com/nt/xcopy.html (Abschnitt "Copy a single file")
Liebe Grüße, Andy