milan1899
Goto Top

Unterordner per Batch verschieben

Schönen guten Abend,

ich habe nun ein paar "Anleitungen" aus dem Internet befolgt, bzw. in Foren gelesen, wo auch was ähnliches gewünscht war. Doch ich kam nicht zum gewünschten Erfolg.

Also ich möchte folgendes:
Quellordner D:\neue dateien
Zielordner E:\daten eingeordnet

Der Ordner "neue dateien" bekommt vom Server ein paar mal wöchentlich Ordner mit Dateien zugesendet. Nachdem ich diese Dateien mit einem Programm richtig benennt etc. habe, möchte ich nun alle Unterordner von "neue dateien" in den Ordner E:\daten verschieben.

Ist dies mit einem .bat möglich? Die Ordner vom Quellordner sollen nachher nichtmehr da liegen, sondern nur mehr in "daten eingeordnet".
Mit welchem Befehl ist dies machbar?
Ist es auch möglich nur Ordner, die innerhalb der letzten 10 Minuten geändert wurden, oder nur Ordner ab einer gewissen Größe zu verschieben?

Ich hoffe ich komme etwas weiter!
Schönen Abend noch!!

Content-ID: 1857072138

Url: https://administrator.de/forum/unterordner-per-batch-verschieben-1857072138.html

Ausgedruckt am: 22.12.2024 um 20:12 Uhr

colinardo
colinardo 08.02.2022 aktualisiert um 11:15:40 Uhr
Goto Top
Servus,
Die Ordner vom Quellordner sollen nachher nichtmehr da liegen, sondern nur mehr in "daten eingeordnet".
Du meinst eine Flat-Copy? Also sämtliche Unterordner der Quelle aufgelöst und nur die enthaltenen Dateien in den Zielordner verschoben? Wenn ja dann kannst du hierzu greifen:
Batch
@echo off
set "quelle=D:\neue dateien"  
set "ziel=E:\daten"  
for /f "delims=" %%a in ('dir /b /s /a-d "%quelle%"') do move "%%a" "%ziel%\"  
Powershell
Get-ChildItem 'D:\neue dateien' -File -Recurse | move-item 'E:\daten' -verbose  
Willst du dagegen die Quellordner-Struktur innerhalb des Quellordners im Ziel erhalten dann brauchst du dich nicht verbiegen sondern kannst direkt Robocopy dafür verwenden:
robocopy "D:\neue dateien" "E:\daten" /E /MOVE  

Alles unter Voraussetzung das keine doppelten Dateinamen vorkommen, da du ja offensichtlich die Dateinamen schon passend umbenannt hast. Wenn doch muss noch eine weitere Prüfung und Umbenennung hinzugefügt werden.

Grüße Uwe
milan1899
milan1899 08.02.2022 aktualisiert um 19:45:09 Uhr
Goto Top
Zitat von @colinardo:

robocopy "D:\neue dateien" "E:\daten" /E /MOVE  



Vielen Dank, mit diesem Befehl in einer .bat Datei funktioniert genau das was ich möchte bestens!! Vielen Dank für die Hilfe!

Eines würde mich noch interessieren, wäre es möglich nur Unterordner zu verschieben, welche eine Mindestgröße von sagen wir mal 200MB haben?
Wäre dies möglich in diesem Befehl einzubauen?

Schönen Abend!

EDIT: habe hier auch nicht wirklich was brauchbares gefunden.

Aja gerade gesehen, ich habe im Ordner "neue Dateien" den Unterordner "Dateien benannt", von dem aus ich alle darin befindlichen Unterordner verschiebe. Gerade gesehen, dass der Befehl mir nun den Ordner "Dateien benannt" auch gelöscht hat im Quellornder. kann man das verhindern?

LG
colinardo
Lösung colinardo 08.02.2022, aktualisiert am 09.02.2022 um 08:47:52 Uhr
Goto Top
Zitat von @milan1899:
Eines würde mich noch interessieren, wäre es möglich nur Unterordner zu verschieben, welche eine Mindestgröße von sagen wir mal 200MB haben?
Wäre dies möglich in diesem Befehl einzubauen?
@echo off
set "quelle=D:\neue dateien"  
set "ziel=E:\daten"  
PowerShell -EP Bypass -C "ls '%quelle%' -Dir | ?{(ls $_.Fullname -File -Recurse | measure Length -Sum).Sum -ge 200MB} | move-item -Destination '%ziel%' -verbose"  
milan1899
milan1899 08.02.2022 um 22:32:04 Uhr
Goto Top
Vielen dank! Wenn ich nun diesen Code anstelle des anderen im Editor einfüge, und als .bat speichere, dann passiert nach ausführen der bat Datei nichts, d.h. ein cmd fenster blinkt kurz auf.
colinardo
colinardo 09.02.2022 aktualisiert um 08:49:30 Uhr
Goto Top
  • Welches OS?
  • Welche PowerShell Version?
  • Ist Powershell bei dir überhaupt freigeschaltet?
  • Öffne manuell eine CMD Konsole und führe das Skript darin aus, dann siehst du evt. Fehlermeldungen.

Klappt hier im Test problemlos. (Aktuelle PowerShell vorausgesetzt und Ordner >200MB vorhanden, wenn die PS nicht aktuell ist muss ich es minimal anpassen oder du aktualisiert deine PS = Empfohlen)
milan1899
milan1899 09.02.2022 um 19:54:45 Uhr
Goto Top
Vielen Dank für deine Mühe!
Habe nun den Befehl in CMD eingegeben, und es kommt eine Fehlermeldung:

Move-Item : Es wurde kein Parameter gefunden, der dem Parameternamen "recurse" entspricht.  
In Zeile:1 Zeichen:126
+ ... e Length -Sum).Sum -ge 200MB} | move-item 'E:\daten' -recurse -verbos ...  
+                                                          ~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Move-Item], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

Betriebssystem Windows 10
PS Version 5.1.19041.1320
colinardo
colinardo 09.02.2022 aktualisiert um 20:34:26 Uhr
Goto Top
Kopier die Zeile nochmal neu, du hast da wohl noch eine alte Version aus dem Browser-Cache.
milan1899
milan1899 09.02.2022 um 21:54:28 Uhr
Goto Top
Vielen Dank! Funktioniert bis jetzt super!!
Danke und noch einen schönen Abend!