o0julia0o
Goto Top

BATCH - Mit Xcopy relativen Pfad kopieren

Verzeichnisstruktur:
D:\Ordner\datei.dat
D:\Ordner\data\daten1

Ich befinde mich beim Ausführen der BAT-Datei(Batch.bat) im Ordner D:\Ordner

So versuche ich es die ganze Zeit:
xcopy /Q /C /H /R /Y datei.dat \data\daten1

Ergebnis:
Windows kopiert die Datei nach:
D:\data\daten1
Ich möchte sie aber in
D:\Ordner\data\daten1

wie geht das jetzt? Mit absoluten Pfaden würde ich es hinbekommen, ich möchte es jedoch kopierbar & somit relativ halten.

lieben dank

Julia

Content-ID: 202426

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

miniversum
miniversum 26.02.2013 aktualisiert um 19:39:31 Uhr
Goto Top
schonmal so versucht?
xcopy /Q /C /H /R /Y "%~dp0"datei.dat "%~dp0"data\daten1  
Sheogorath
Sheogorath 26.02.2013 um 20:02:05 Uhr
Goto Top
Hallöchen,


einfach ohne "\" der schickt dich sonst ins Root-Verzeichnis:
xcopy /Q /C /H /R /Y datei.dat data\daten1

Viel Spaß ;)
Pjordorf
Pjordorf 26.02.2013 um 20:30:29 Uhr
Goto Top
Hallo,

Zitat von @o0Julia0o:
Code Tags helfen dir und uns. Wie? Hier zu finden [faq:20#toc-23734360299-28
]
xcopy /Q /C /H /R /Y datei.dat \data\daten1
Windows kopiert die Datei nach: D:\data\daten1
Was auch so korrekt ist weil du es ja so mit deinem XCopy willst (s.o). Dein erster umgekehrter Schrägstrich (Backslash) bedeutet nämlich ROOT oder Wurzel. Hier eben bei dir D:\

Ich möchte sie aber in D:\Ordner\data\daten1
Dann nimm
xcopy /Q /C /H /R /Y datei.dat .\data\daten1\
Dann klappt es mit relativen Pfaden. Und der umgekehrte Schrägstrich am ende sagt deinem XCopy das es sich um einen Ordner handelt, sonst kommt nämlich die Frage ob das Ziel eine Datei oder Verzeichniss ist.

Ein Konsolenfenster (CMS Fenster, DOS Prompt...) und darin ein Dir gemacht. Dort findest du in Unterverzeichnisse immer das Verzeichniss . sowie das Verzeichniss .. Im Wurzel (Root) Verzechniss gibt es diese beiden Verzeichnisse nicht.
E:\Ordner>dir
 Datenträger in Laufwerk E: ist Data
 Volumeseriennummer: EE85-A833

 Verzeichnis von E:\Ordner

26.02.2013  20:00    <DIR>          .
26.02.2013  20:00    <DIR>          ..
26.02.2013  20:04    <DIR>          Data
24.05.2011  19:58               412 datei.dat
               1 Datei(en),            412 Bytes
               3 Verzeichnis(se), 56.983.183.360 Bytes frei

E:\Ordner>
Punkt bedeutet aktuelles Verzeichniss
Punkt Punkt bedeutet übergeordnetes Verzeichniss.

Somit geht auch ein
xcopy /Q /C /H /R /Y .\datei.dat ..\ordner\data\daten1\
oder auch ein
xcopy /Q /C /H /R /Y datei.dat ..\ordner\data\daten1\
und führt zum gleichen Ergebniss datei.dat kopiert nach D:\Ordner\Data\daten1\datei.dat.

Diese Art der Nutzung ist nicht nur MS eigen. Einige OSe nutzen diese Art der Pfadangaben (. und ..) http://en.wikipedia.org/wiki/Path_(computing)

Gruß,
Peter
o0Julia0o
o0Julia0o 28.02.2013 aktualisiert um 09:40:25 Uhr
Goto Top
Wow, danke Euch!
Zitat von @Pjordorf:
> Ich möchte sie aber in D:\Ordner\data\daten1
Dann nimm
xcopy /Q /C /H /R /Y datei.dat .\data\daten1\
Dann klappt es mit relativen Pfaden. Und der
umgekehrte Schrägstrich am ende sagt deinem XCopy das es sich um einen Ordner handelt, sonst kommt nämlich die Frage ob
das Ziel eine Datei oder Verzeichniss ist.
Das stimmt aber so nicht. Egal ob ich:
xcopy /Q /C /H /R /Y datei.dat .\data\daten1\
oder
xcopy /Q /C /H /R /Y datei.dat .\data\daten1
Er kopiert die Datei (wie gewünscht) in den Ordner "D:\Ordner\data\daten1". Und erstellt nicht etwa ein Verzeichnis dort. Sonst hätte man ja auch ein Problem.. denn wie würde ich die Meldung "Datei oder Verzeichnis" unterdrücken können, wenn man es so wie ich möchte, dass es sich um eine Datei handeln soll.
Du schreibst ja selbst:
Zitat von @Pjordorf:
Somit geht auch ein
xcopy /Q /C /H /R /Y .\datei.dat ..\ordner\data\daten1\
oder auch ein
xcopy
> /Q /C /H /R /Y datei.dat ..\ordner\data\daten1\
und führt zum gleichen Ergebniss datei.dat kopiert nach
D:\Ordner\Data\daten1\datei.dat.
Ansonsten müsste ja, wenn deine Aussage oben zutrifft, im Ordner: "D:\Ordner\Data\daten1" ein Verzeichnis namens: "datei.dat" erstellt werden. So, dass nach der Ausführunb der Batch.bat dann folgender Ordner da wäre: "D\Ordner\Data\daten1\datei.dat\". Selbst wenn ich manuell versuchen würde einen solchen Ordner zu erstellen, ginge das allerdings nicht(mit "." im Ordnernamen).

Oder habe ich da irgendetwas komplett falsch verstanden?

ein schönes Wochenende Allen!

Julia face-smile
Pjordorf
Pjordorf 28.02.2013 aktualisiert um 12:07:38 Uhr
Goto Top
Hallo,

Zitat von @o0Julia0o:
Frage ob das Ziel eine Datei oder Verzeichniss ist.
Das stimmt aber so nicht.
Doch, es stimmt genau so. face-smile Warum? Lies weiter.
xcopy /Q /C /H /R /Y datei.dat .\data\daten1\
xcopy /Q /C /H /R /Y datei.dat .\data\daten1
Unterschied der Zeile 1 von Zeile 2 ist nur der Backslasch am Ende. Du solltest bedenken das auch ein xcopy Fehlende / nicht existierende Ordner im Zielpfad anlegen kann. Daher ergeben sich 2 möglichkeiten. Die Ordnerstruktur ist für das Ziel schon vorhanden oder eben nicht.

Im Zeile 1 wird ohne Rückfrage die Ordnerstruktur erstellt da es durch den letzten Backslash ersichtlich ist das das angegebene Ziel ein Ordner ist. Somit erfolgt keine Abfrage ob Ordner oder Datei. Wir schauen ob die Zieldateim im Zielpfad existiert.
E:\Ordner>dir .\data\daten1\
 Datenträger in Laufwerk E: ist Data
 Volumeseriennummer: EE85-A833

 Verzeichnis von E:\Ordner\data\daten1

28.02.2013  11:34    <DIR>          .
28.02.2013  11:34    <DIR>          ..
               0 Datei(en),              0 Bytes
               2 Verzeichnis(se), 51.235.909.632 Bytes frei

E:\Ordner>
Und nun das Kopieren mit xcopy ohne Backslasch am Ende
E:\Ordner>xcopy /Q /C /H /R /Y datei.dat .\data\daten1
1 Datei(en) kopiert

E:\Ordner>

Jetzt das ganze ohne das der Zielpfad ganz oder teilweise existiert. Ein dir liefert schon Fehler
E:\Ordner>dir .\data\daten1\
Das System kann die angegebene Datei nicht finden.

E:\Ordner>
Der Ordner daten1 existiert also nicht. Ein
E:\Ordner>dir .\data\
 Datenträger in Laufwerk E: ist Data
 Volumeseriennummer: EE85-A833

 Verzeichnis von E:\Ordner\data

28.02.2013  11:43    <DIR>          .
28.02.2013  11:43    <DIR>          ..
               0 Datei(en),              0 Bytes
               2 Verzeichnis(se), 51.235.897.344 Bytes frei

E:\Ordner>
zeigt es deutlicher. Nun wenden wir den xcopy Befehl an und achten drauf das am ende eben jener Backslasch nicht dran ist und es kommt (wie erwartet) ein
E:\Ordner>xcopy /Q /C /H /R /Y datei.dat .\data\daten1
Ist das Ziel .\data\daten1 ein Dateiname
oder ein Verzeichnisname
(D = Datei, V = Verzeichnis)? V
1 Datei(en) kopiert

E:\Ordner>
und durch Eingabe eines V wurde nun auch der korrekte Pfad erzeugt und die Datei dort abgelegt.

Nimmst du ein D (Datei) um dem xcopy zu sagen das das Ziel eine Datei ist, wird eine Datei mit Namen daten1 angelegt. Wie hier
E:\Ordner>xcopy /Q /C /H /R /Y datei.dat .\data\daten1
Ist das Ziel .\data\daten1 ein Dateiname
oder ein Verzeichnisname
(D = Datei, V = Verzeichnis)? D
1 Datei(en) kopiert
erstellt. Ein dir zeigt dir deutlich was passiert ist
E:\Ordner>dir .\data\
 Datenträger in Laufwerk E: ist Data
 Volumeseriennummer: EE85-A833

 Verzeichnis von E:\Ordner\data

28.02.2013  11:51    <DIR>          .
28.02.2013  11:51    <DIR>          ..
25.12.2012  21:40             1.441 daten1
               1 Datei(en),          1.441 Bytes
               2 Verzeichnis(se), 51.235.889.152 Bytes frei

E:\Ordner>
Es wurde also eine Datei mit Namen daten1 erzeugt.
Oder habe ich da irgendetwas komplett falsch verstanden?
Die wirkungsweise von xcopy oder wie jemand hier immer zu sagen pflegt "Das was die Redmonder Praktikantinnen wieder zusammen geschrubt haben"face-smile

Als Rechner noch langsam waren, war es besser für eine korrekte Umgebung zu sorgen da sonst die Fehlermeldungen einfach zu lange dauerten bis diese von der Diskette (180MB 9" Einseitig) geladen waren. Da stellte sich schon die Frage "Ist das Ziel überhaupt vorhanden, wenn nicht, was dann"face-smile Und dein Rechner scheint etwas vorzuhgehen wie dein am Donnerstag ausgerufenes "schönes Wochenende" schon zeigtface-smile

Gruß,
Peter
o0Julia0o
o0Julia0o 28.02.2013 aktualisiert um 18:42:31 Uhr
Goto Top
ho face-smile danke, Peter. Praktikanntinnen habens manchmal ganz schön schwer... - am 08. März ist Weltfrauentag. Aber das ist ein anderes Thema.

xcopy /Q /C /H /R /Y datei.dat .\data\daten1\dateiV.dat
erzeugt überigens eine Datei dateiV - ohne Nachfrage, wenn diese bereits vorhanden ist(aber mit den Daten der datei.dat)! Aber das weißt du gewiss.. vielleicht ja der ein oder andere Mitleser nicht. Ich habe das jedenfalls gerade herausgefunden, wo ich deine Dinge nachvollzogen habe.

Und diesen Umstand finde ich auch schön. Ich möchte nämlich die Nachfrage vermeiden - und das drücken auf die "D"-Taste. Jedoch kann es vorkommen, dass die "dateiV.dat" gar nicht vorhanden ist. Dann fragt der ja wieder nach. Wie bekomme ich das jetzt noch hin? Ich möchte xcopy quasi mitgeben, dass immer wenn es eine Frage hat ob es eine Datei oder ein Verzeichnis erstellen soll, diese mit "D" beantwortet bekommt.

vorgehen tut mein Rechner nicht. Ich habe mich nur so aufs Wochenende gefreut - aber besser als jetzt schon ein Frohes Neues zu wünschen ;)

und weil Frauen immer Recht haben(wollen), bleibe ich dabei...

...ein schönes Wochenende!

Julia face-smile