WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Dateien per Script verschieben (http://www.wcm.at/forum/showthread.php?t=226374)

justsmile 23.01.2008 13:46

Dateien per Script verschieben
 
Hallo!

Ich suche eine Möglichkeit, Dateien (und Unterverzeichnisse) mit einem Windows-Script zu verschieben.
Die endgültige Funktion soll genauso sein wie bei mv unter linux

Bin derzeit am Probieren mit Robocopy, leider funktioniert das aber nicht ganz...

robocopy /MOVE C:\test D:\test *.*

Resultat
+ Dateien werden verschoben
ABER
- C:\test wird gelöscht
- Dateien in D:\test werden überschrieben falls vorhanden
- es werden nur Dateien aus C:\test verschoben,
nicht aber z.B. aus C:\test\test\...
- Ordner werden nicht verschoben

Kann mir jemand weiterhelfen?

void 23.01.2008 14:10

??
hilfreich wären die gewünschten funktionen von mv unter linux genau zu beschreiben.

es gibt unter windows den befehl "move"! - warum verwendest du ihn nicht?

p.s.: bei einem verschieben ist das quellverzeichnis natürlich nachher nicht mehr vorhanden, also "gelöscht" ;)

justsmile 23.01.2008 17:56

mv (linux)
verschiebt Dateien und (Unter)verzeichnisse

move (win)
verschiebt nur Dateien

--

Ziele
es soll der Inhalt des Quellverzeichnisses (mit Unterverzeichnissen) verschoben werden und nicht das Quellverzeichnis mit Inhalt

void 23.01.2008 21:31

Zitat:

Original geschrieben von justsmile
move (win)
verschiebt nur Dateien

das ist einmal def. falsch

also mir fällt es schwer, den unterschied zwischen mv und move zu erkennen... mv verschiebt genauso das ganze quellverzeichnis.
lediglich mv verzeichnis/* und move verzeichnis\* verhalten sich anders.

btw: ist das ein großes problem, den "inhalt" und nicht gleich das ganze "verzeichnis" zu verschieben?

eine lösung wäre zuerst kopieren, dann alte dateien löschen - ist aber wahrscheinlich keine zufriedenstellende lösung

Zitat:

Original geschrieben von Wikipedia, the free encyclopedia
/MOV
Moves the files, removing them from the source folder. /MOVE removes the source folder as well if empty.

das verhalten (löschen vom quellverzeichnis) ist also erwünscht - am einfachsten nach dem verschieben wieder anlegen :D

Zitat:

Original geschrieben von Wikipedia, the free encyclopedia
/S
Copies subdirectories unless they're empty (like XCOPY).
/E
Copies subdirectories, even empty ones (like XCOPY).

...löst das andere problem

wäre noch auszuprobieren ob jetzt dateien in unterverzeichnissen korrekt verschoben werden...

das mit dem überschreiben wird sich mit robocopy nicht lösen lassen :rolleyes:

um welche art von script handelt es sich eigentlich? powershell eine option?

myope 24.01.2008 09:02

Zitat:

Original geschrieben von void

eine lösung wäre zuerst kopieren, dann alte dateien löschen - ist aber wahrscheinlich keine zufriedenstellende lösung

warum ist das keine zufriedenstellende lösung?
es ist ein script.
ob da nun 1 zeile drinnen steht oder 2

xcopy ...
rd /S /Q ....

justsmile 24.01.2008 10:24

mit xcopy und anschließendem rmdir bzw. del habe ich es auch schon probiert

klar, man kann das quellverzeichnis auch jedes Mal wieder neu anlegen... :rolleyes:

Fall 1)
alle Dateien wurden kopiert, weil in Zielverzeichnis noch nicht vorhanden
-> PERFEKT

Fall 2)
es wurden nicht alle Dateien kopiert, weil z.B. 1 Datei nicht überschrieben wurde od. kein Speicherplatz auf Ziellaufwerk
-> PROBLEM
weil restliche Quelldateien trotzdem gelöscht werden

myope 24.01.2008 12:07

eine idee:

du kannst ja das ergebnis von xcopy umleiten in ein file >>

dann dieses mit findstr auswerten.
wenn ok lösche alles
ansonsten nicht.

es gibt ja auch noch errorlevels!

xcopy c:\Quellverzeichnis\zukopierendeDatei.datei c:\Zielverzeichnis /C /D /E /H /R /Y /F 1>>%LOG_FILE_NAME% 2>>&1
echo.
if errorlevel 4 echo 4 ---richtig doller Fehler... zu wenig Hauptspeicher zum Kopieren
if errorlevel 3 echo 3
if errorlevel 2 echo 2 ---Problem vor dem Bildschirm...Syntaxfehler
if errorlevel 1 echo 1 && goto irgendeinFehler
if errorlevel 0 echo 0 alles Prima
goto Normalweiter

:irgendeinFehler
@Echo Xcopy ging in die Grütze...ich hör auf
goto :eof

:NormalWeiter
@echo ...habs geschafft, soll ich noch mal?
pause


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag