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-ID: 56544

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

Ausgedruckt am: 14.11.2024 um 05:11 Uhr

Dynadrate
Dynadrate 14.05.2007 um 23:05:52 Uhr
Goto Top
Die Parameter müssen (laut xcopy /?) ans Ende gestellt werden
AdminDash
AdminDash 14.05.2007 um 23:17:45 Uhr
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
AdminDash
AdminDash 14.05.2007 um 23:30:43 Uhr
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
miniversum
miniversum 15.05.2007 um 08:24:35 Uhr
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
FreakyF
FreakyF 15.05.2007 um 08:33:12 Uhr
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?
FreakyF
FreakyF 15.05.2007 um 08:42:50 Uhr
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.
FreakyF
FreakyF 15.05.2007 um 08:45:39 Uhr
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?
bastla
bastla 15.05.2007 um 09:25:13 Uhr
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
FreakyF
FreakyF 15.05.2007 um 13:23:00 Uhr
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?
miniversum
miniversum 15.05.2007 um 15:02:29 Uhr
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
bastla
bastla 15.05.2007 um 15:47:06 Uhr
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
FreakyF
FreakyF 15.05.2007 um 17:58:38 Uhr
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?
Biber
Biber 15.05.2007 um 18:39:47 Uhr
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
miniversum
miniversum 15.05.2007 um 18:46:03 Uhr
Goto Top
du könntest auch Ordnernamen eingeben mit leerzeichen ohne siein anführungszeichen setzen zu müssen.

miniversum
FreakyF
FreakyF 16.05.2007 um 12:13:04 Uhr
Goto Top
Ok jetzt hab ich /i verstanden face-smile

Danke^^