freakyf
Goto Top

Ordner kopieren

Hallo!

Ich will über eine Batch verschiedene Ordner kopieren.
In die Batch soll man Quelle und Ziel eingeben können.

Warum funktioniert mein Programm nicht?


Set /P Quelle ="Geben Sie bitte die Quelle ein : "
Set /P Ziel ="Geben Sie bitte das Ziel ein : "


xcopy /s /d /y %Quelle% %Ziel%


Danke


Markus

Content-Key: 56544

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

Printed on: April 25, 2024 at 04:04 o'clock

Member: Dynadrate
Dynadrate May 14, 2007 at 21:05:52 (UTC)
Goto Top
Die Parameter müssen (laut xcopy /?) ans Ende gestellt werden
Member: AdminDash
AdminDash May 14, 2007 at 21:17:45 (UTC)
Goto Top
Hi,

den Parameter /D muss ein Datumsformat folgen.
Ruf mal help xcopy, da siehste es. /D:M-T-J

Daher läuft Deine Batch noch niicht.


Wenn man übrigens die Parameter vor oder nach dem Befehl setzt kommen auch unterschiedliche Ergenbisse raus. Beispiel:
xcopy /s /e /y c:\temp d:\temp wird nachgefragt obs ein Dateiname oder ein Verzeichnis sein soll. xcopy c:\temp d:\temp /e /s /y erstellt gleich ein Verzeichnis auf D: und kopiert mittels Parameter s und e alles rein.

Gruß AdminDash
Member: AdminDash
AdminDash May 14, 2007 at 21:30:43 (UTC)
Goto Top
Nachbrenner ;)

set /P Quelle="Quelle angeben :"
set /P Ziel="Ziel angeben :"
echo V| xcopy /S /E /Y %Quelle% %Ziel%

so klappts dann auch ohne Nachfrage aus einer Batch. Bitte auch die Abstände zwischen den = beachten. Bei Dir sind immer welche drin. Wenn die drin sind dann kommt beim Aufruf von set folgendes raus:
Quelle =c:\temp
Ziel =d:\temp

raus.
Sind die Leerzeichen weg stimmt auch der set Aufruf.

Gruß AdminDash
Member: miniversum
miniversum May 15, 2007 at 06:24:35 (UTC)
Goto Top
Also ich würde das so lassen. Die Parameter ans Ende aber sonst ok.
Das /d ohne Datum ist auch ok je nach Anwendungsfall. Ich gehe jetzt mal davon aus das du Bewusst diese Parameter gewählt hast und weist wa ssie bewirken. Drum will ich auch daran ncith rumdrehen.
Vondaher würd ichs da so machen:
Set /P Quelle ="Geben Sie bitte die Quelle ein : "
Set /P Ziel ="Geben Sie bitte das Ziel ein : "
xcopy %Quelle% %Ziel% /s /d /y

miniversum
Member: FreakyF
FreakyF May 15, 2007 at 06:33:12 (UTC)
Goto Top
set /P Quelle="Quelle angeben :"
set /P Ziel="Ziel angeben :"
echo V| xcopy /S /E /Y %Quelle% %Ziel%

/d ist für meinen Anwendungsfall wichtig. Warum brauch ich /e?
Er kopiert doch trotzdem die Unterverzeichnisse, oder?
Member: FreakyF
FreakyF May 15, 2007 at 06:42:50 (UTC)
Goto Top
> Set /P Quelle ="Geben Sie bitte
die Quelle ein : "
> Set /P Ziel ="Geben Sie bitte das
Ziel ein : "
> xcopy %Quelle% %Ziel% /s /d /y

Bei mir funktioniert dieser Vorschlag leider nicht...
Batch bricht einfach ab ohne zu kopieren.
Member: FreakyF
FreakyF May 15, 2007 at 06:45:39 (UTC)
Goto Top
Bei mir funktioniert es so:

set /P Quelle="Quelle angeben :"
set /P Ziel="Ziel angeben :"
echo V| xcopy /S /D /Y %Quelle% %Ziel%


Kann mir jemand den Sinn von V| erklären?
Member: bastla
bastla May 15, 2007 at 07:25:13 (UTC)
Goto Top
Hallo FreakyF!

Damit wird vorweg die beliebte Frage
Ist das Ziel D:\Test ein Dateiname
oder ein Verzeichnisname
(D = Datei, V = Verzeichnis)?
beantwortet. Einfacher ginge es mit dem Schalter /I.

Grüße
bastla
Member: FreakyF
FreakyF May 15, 2007 at 11:23:00 (UTC)
Goto Top
/S und /E ist doch ein Widerspruch, oder?

Ich versteh den Sinn von /I nicht.
XCOPY kopiert doch fehlende Ordner auch ohne /I.
Warum soll man also /I verwenden?
Member: miniversum
miniversum May 15, 2007 at 13:02:29 (UTC)
Goto Top
/E beinhaltet /S ist also kein Widerspruch sondern eigentlich nur zuviel.
Beim set /p hast du hinter den Variabeln ein Leerzeichen. Das muß weg.
Also so das Ganze:
Set /P Quelle="Geben Sie bitte die Quelle ein : "
Set /P Ziel="Geben Sie bitte das Ziel ein : "
xcopy %Quelle% %Ziel% /s /d /y
Kannst ja mal noch drüber nachdenken die Letzte Zeile so abzuändern:
xcopy "%Quelle:"=%" "%Ziel:"=%" /s /d /y

miniversum
Member: bastla
bastla May 15, 2007 at 13:47:06 (UTC)
Goto Top
Hallo FreakyF!

XCOPY kopiert doch fehlende Ordner auch ohne /I.
Warum soll man also /I verwenden?
Damit die oben dargestellte Frage ... (D = Datei, V = Verzeichnis)? bei einem nicht existierenden Zielverzeichnis sozusagen von xcopy selbst mit "V" beantwortet wird. Vergleiche
xcopy /I C:\WINDOWS\Media C:\MediBak
mit
xcopy C:\WINDOWS\Media C:\MediBack
(Ich gehe natürlich davon aus, dass weder C:\MediBak noch C:\MediBack bereits vorhanden sind.)

Grüße
bastla
Member: FreakyF
FreakyF May 15, 2007 at 15:58:38 (UTC)
Goto Top
/E beinhaltet /S ist also kein Widerspruch
sondern eigentlich nur zuviel.
Beim set /p hast du hinter den Variabeln ein
Leerzeichen. Das muß weg.
Also so das Ganze:
> Set /P Quelle="Geben Sie bitte die
Quelle ein : "
> Set /P Ziel="Geben Sie bitte das
Ziel ein : "
> xcopy %Quelle% %Ziel% /s /d /y

Super das funktioniert!

Kannst ja mal noch drüber nachdenken
die Letzte Zeile so abzuändern:
> xcopy "%Quelle:"=%"
"%Ziel:"=%" /s /d /y

miniversum

Was für einen Vorteil bringt mir diese Variante?
Member: Biber
Biber May 15, 2007 at 16:39:47 (UTC)
Goto Top
Anmerkung: zur Demo reicht auch
xcopy /L C:\WINDOWS\Media C:\MediBack
-bzw.-
xcopy /L /i C:\WINDOWS\Media C:\MediBak

...dann hat man/frau nicht so viel wegzukehren hinterher.

Gruß
Biber
Member: miniversum
miniversum May 15, 2007 at 16:46:03 (UTC)
Goto Top
du könntest auch Ordnernamen eingeben mit leerzeichen ohne siein anführungszeichen setzen zu müssen.

miniversum
Member: FreakyF
FreakyF May 16, 2007 at 10:13:04 (UTC)
Goto Top
Ok jetzt hab ich /i verstanden face-smile

Danke^^