Ordner verschieben ist Zielordner gleich dann nur den Inhalt
Hallo,
ich möchte vom Desktop Ordner verschieben, ist der Inhalt schon in Ziel dann soll nur der Inhalt kopiert werden in den bestehenden Ordner. Und der Ordner dann vom Desktop gelscht werden.
Befindet sich die Datei schon im Zielordner, dann soll sie verworfen werden.
mit move geht das nicht, bzw mit xcopy....
oder
Gruß
ich möchte vom Desktop Ordner verschieben, ist der Inhalt schon in Ziel dann soll nur der Inhalt kopiert werden in den bestehenden Ordner. Und der Ordner dann vom Desktop gelscht werden.
Befindet sich die Datei schon im Zielordner, dann soll sie verworfen werden.
mit move geht das nicht, bzw mit xcopy....
oder
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159084
Url: https://administrator.de/contentid/159084
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
11 Kommentare
Neuester Kommentar
Na ja, bodyparts,
unter uns Betschwestern: Dein Schreibstil ist schon unter aller Kanone, aber OK, Du wärst nicht der erste, der es eilig und daher den Grammatikmodus auf Off gestellt hat, mich eingeschlossen.
Zu Deiner Frage:
Schau Dir mal Robocpy an, im speziellen die Parameter /XN /XC und /XO, um zu verhindern, dass bereits vorhandenen Dateien im Zielverzeichnis ersetzt werde, selbst wenn sie neuer sind oder verändert wurden.
Beim "Verschieben" handelt es sich ja faktisch um nichts anderes, als ein Kopieren mit anschliessendem Löschen der QuellVerzeichnisse/Dateien. Da hilft dir eine Batchdatei weiter. Etwaige Fragen dazu kannst Du ja im entsprechenden Bereich hier im Forum stellen(EDIT: Ups, da sind wir ja bereits. Na mein Fehler)...
LG Florian
unter uns Betschwestern: Dein Schreibstil ist schon unter aller Kanone, aber OK, Du wärst nicht der erste, der es eilig und daher den Grammatikmodus auf Off gestellt hat, mich eingeschlossen.
Zu Deiner Frage:
Schau Dir mal Robocpy an, im speziellen die Parameter /XN /XC und /XO, um zu verhindern, dass bereits vorhandenen Dateien im Zielverzeichnis ersetzt werde, selbst wenn sie neuer sind oder verändert wurden.
Beim "Verschieben" handelt es sich ja faktisch um nichts anderes, als ein Kopieren mit anschliessendem Löschen der QuellVerzeichnisse/Dateien. Da hilft dir eine Batchdatei weiter. Etwaige Fragen dazu kannst Du ja im entsprechenden Bereich hier im Forum stellen(EDIT: Ups, da sind wir ja bereits. Na mein Fehler)...
LG Florian
Hallo bodyparts,
na ja, geht so...
Nichtsdestotrotz ein paar Codezeilen von mir, die Deinen Wünschen hoffentlich gerecht werden. Prüfe sie aber auf jeden Fall erstmal mit Testdateien, oder ersetzt die Befehle RD, MD und MOVE durch ECHO RD, ECHO MD bzw. ECHO MOVE (beim MOVE-Befehl musst Du dann noch das
Das Skript verschiebt nur Dateien in Verzeichnissen, die sowohl auf dem Desktop als auch im Ziel vorhanden sind. Dabei wird die komplette Verzeichnisstruktur unterhalb dieser Verzeichnisse verarbeitet. Dateien, die im Ziel bereits vorhanden sind, werden nicht verschoben. Das Quell-Verzeichnis wird mit allen Unterverzeichnissen und verbliebenen Dateien gelöscht.
Gruß
Friemler
na ja, geht so...
Nichtsdestotrotz ein paar Codezeilen von mir, die Deinen Wünschen hoffentlich gerecht werden. Prüfe sie aber auf jeden Fall erstmal mit Testdateien, oder ersetzt die Befehle RD, MD und MOVE durch ECHO RD, ECHO MD bzw. ECHO MOVE (beim MOVE-Befehl musst Du dann noch das
> NUL
am Zeilenende entfernen, sonst siehst Du nix ). Hilfe zum FOR-Befehl gibt es übrigens in meinem ausführlichen Tutorial.@echo off
setlocal
set "Src=%UserProfile%\Desktop"
set "Dest=D:\export"
for /d %%d in ("%Src%\*.*") do (
if exist "%Dest%\%%~nxd" (
call :ProcessDir "%%d"
for /f "delims=" %%f in ('dir /s /b /a:d "%%d"') do (
call :ProcessDir "%%f"
)
rd "%%d" /s /q
)
)
endlocal
exit /b
:ProcessDir
set "SrcDir=%~1"
set "Dir=%SrcDir%"
call set "Dir=%%Dir:%Src%=%%"
md "%Dest%%Dir%" 2>NUL
for %%i in ("%SrcDir%\*.*") do (
if not exist "%Dest%%Dir%\%%~nxi" (
move "%%i" "%Dest%%Dir%" > NUL
)
)
exit /b
Das Skript verschiebt nur Dateien in Verzeichnissen, die sowohl auf dem Desktop als auch im Ziel vorhanden sind. Dabei wird die komplette Verzeichnisstruktur unterhalb dieser Verzeichnisse verarbeitet. Dateien, die im Ziel bereits vorhanden sind, werden nicht verschoben. Das Quell-Verzeichnis wird mit allen Unterverzeichnissen und verbliebenen Dateien gelöscht.
Gruß
Friemler
Hallo @all!
Ich versuch' mich auch noch an der Interpretation und gehe mal davon aus, dass nur noch nicht im Ziel existierende Dateien verschoben werden sollen (allerdings auch solche, die sich in Unterordnern befinden) - falls ja, dann zB für alle Ordner auf dem Desktop:
bzw für einzelne Ordner:
Beide Varianten sind zum Testen gedacht (hab' ich nämlich nicht gemahct) und daher durch das groß geschriebene "L" im jeweils zweiten "
Grüße
bastla
P.S.: Und das Ganze eigentlich nur wegen
Ich versuch' mich auch noch an der Interpretation und gehe mal davon aus, dass nur noch nicht im Ziel existierende Dateien verschoben werden sollen (allerdings auch solche, die sich in Unterordnern befinden) - falls ja, dann zB für alle Ordner auf dem Desktop:
@echo off & setlocal
set "User=xyz"
set "Quelle=%userprofile%\..\%User%\Desktop"
set "Ziel=D:\Export\%User%"
REM für jeden einzelnen Ordner
for /d %%i in ("%Quelle%\*") do (
REM bereits im Ziel vorhandene Dateien sofort löschen
for /f "delims=" %%d in ('xcopy /ehluy "%%i\*.*" "%Ziel%\%%~nxi\"^|findstr /v /c:"Datei(en) kopiert"') do echo del "%%d"
REM verbleibende Dateien inkl Ordnerstruktur kopieren
xcopy /Leh "%%i\*.*" "%Ziel%\%%~nxi\"
REM Ordner löschen
echo rd /s /q "%%i"
)
@echo off & setlocal
set "User=xyz"
set "Quelle=%userprofile%\..\%User%\Desktop\Der Ordner"
set "Ziel=D:\Export\%User%\Der Ordner"
REM bereits im Ziel vorhandene Dateien sofort löschen
for /f "delims=" %%d in ('xcopy /ehluy "%Quelle%\*.*" "%Ziel%\"^|findstr /v /c:"Datei(en) kopiert"') do echo del "%%d"
REM verbleibende Dateien inkl Ordnerstruktur kopieren
xcopy /Leh "%Quelle%\*.*" "%Ziel%\"
REM Ordner löschen
echo rd /s /q "%Quelle%"
xcopy
"-Befehl und das "echo
" vor dem "del
" bzw dem "rd
" noch "gesichert" - werden diese Sicherheitsmaßnahmen entfernt, passiert's tatsächlich ...Grüße
bastla
P.S.: Und das Ganze eigentlich nur wegen
mit move geht das nicht, bzw mit xcopy....
Hi bastla,
schöne Lösung !
Aber Zeile 3 von Skript 1 muss nur
lauten, bzw. Zeile 3 in Skript 2
Um das ganze Userspezifisch zu machen, muss man mit "ausgeschriebenen" Pfaden arbeiten (ohne %UserProfile%, da steckt der Username schon drin).
[EDIT]
Ich nehme alles zurück (ausser dem Lob ), habe nicht genau genug hingesehen.
Gruß
Friemler
schöne Lösung !
Aber Zeile 3 von Skript 1 muss nur
set "Quelle=%userprofile%\Desktop"
set "Quelle=%userprofile%\Desktop\Der Ordner"
[EDIT]
Ich nehme alles zurück (ausser dem Lob ), habe nicht genau genug hingesehen.
Gruß
Friemler
[OT]
@Friemler
Schließe mich der Spielkinder-Fraktion an (und genieße das Lob , kann dieses aber gleich postwendend an Biber weiterreichen, bei dem ich die Variante mit "
BTW: Meine konkrete Motivation ist dem "P.S." zu entnehmen.
Grüße
bastla
[/OT]
@Friemler
Schließe mich der Spielkinder-Fraktion an (und genieße das Lob , kann dieses aber gleich postwendend an Biber weiterreichen, bei dem ich die Variante mit "
xcopy /l
" - wie so vieles, was ich inzwischen auch sehr gerne verwende - zum ersten Mal gesehen habe) ...BTW: Meine konkrete Motivation ist dem "P.S." zu entnehmen.
Grüße
bastla
[/OT]