none
Erstellen und kopieren von Ordner mit Dateien RRS feed

  • Frage

  • Hallo,

    ich habe Probleme ein Script für meine Bedürfnisse zu realisieren. Es geht um folgendes:

    Ich habe folgende Ordnerstruktur

    --> Hauptordner

    -> Ordner 1 (mit Dateien)

    -> Ordner 2 (mit Dateien)

    -> usw..

    Nun möchte ich das Powershell jeweils eine Kopie der Ordner 1, Ordner 2, usw. (ohne Dateien) erstellt und die Quellordner mit den Dateien in das jeweils gerade erstellte Verzeichnis kopiert. Das sollte dann so aussehen:

    --> Hauptordner

    -> Ordner 1 -> Ordner 1 (mit Dateien)

    -> Ordner 2 -> Ordner 2 (mit Dateien)

    -> usw..

    Da ich nicht wirklich Ahnung von Powershell habe, wäre ich über jede Hilfe dankbar.

    MfG

    Sonntag, 12. Januar 2020 13:04

Antworten

  • Verschoben oder kopiert?

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-item?view=powershell-7

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-item?view=powershell-7

    Die meiste gute Doku gibts leider nur in englisch. Aber es gibt ja auch gute Übersetzer;-):

    https://adamtheautomator.com/copy-item-copying-files-powershell/

    Sonntag, 12. Januar 2020 13:50
  • die Dateien sollen dann verschoben werden. In dem Ordner 1 ist dann nur der neu erstellte Ordner 1 und in diesem befinden sich dann die Dateien.

    Wenn ich Dich richtig verstanden habe, möchtest Du die Dateien einfach eine Ordner-Ebene "tiefer" schieben, richtig?

    Der Anfang war ja schon super ... 

    $FolderList = Get-ChildItem 'Mein Arbeitsverzeichnis' -Directory
    
    foreach ($FolderItem in $FolderList) {
        $NewFolder = Join-Path -Path $FolderItem.FullName  -ChildPath $FolderItem.BaseName
        New-Item -Path $NewFolder -ItemType Directory 
        Get-ChildItem -Path $FolderItem.FullName -File |
            Move-Item -Destination $NewFolder
    }


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 13. Januar 2020 00:18

Alle Antworten

  • DAnn könnte dir dieser Blog weiterhelfen:
    https://www.linetwork.de/dateienundordner/
    Sonntag, 12. Januar 2020 13:26
  • Hallo,

    danke für die Seite. Die hatte ich auch schon gefunden und dadurch diesen Codesnippet angefertigt

    $UserFolders = Get-ChildItem 'Mein Arbeitsverzeichnis' -Directory
    
    foreach ($userFolder in $UserFolders)
    {
        New-Item -Path (Join-Path $userFolder.FullName ('{0}' -f $userFolder.BaseName)) -ItemType Directory
    }

    Damit werden zumindest schon einmal Verzeichniskopien meiner Ordner erstellt und diese dann richtig eingefügt. Also so

    -> Ordner 1 (mit Dateien) -> Ordner 1

    -> Ordner 2 (mit Dateien) -> Ordner 2

    Nun sollen aber die Dateien aus dem ersten Ordner in den Unterordner verschoben werden. Dann sollte es so aussehen

    -> Ordner 1 -> Ordner 1 (mit Dateien)

    -> Ordner 2  -> Ordner 2 (mit Dateien)

    MfG

    Sonntag, 12. Januar 2020 13:34
  • Verschoben oder kopiert?

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-item?view=powershell-7

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-item?view=powershell-7

    Die meiste gute Doku gibts leider nur in englisch. Aber es gibt ja auch gute Übersetzer;-):

    https://adamtheautomator.com/copy-item-copying-files-powershell/

    Sonntag, 12. Januar 2020 13:50
  • Hallo,

    die Dateien sollen dann verschoben werden. In dem Ordner 1 ist dann nur der neu erstellte Ordner 1 und in diesem befinden sich dann die Dateien.

    Danke für die Links. Ich werde mal schauen ob ich da die Lösung finden kann.

    Das Problem dabei ist für mich nur das die Ordner nicht Ordner 1 und Ordner 2 (habe ich nur zum besseren Verständnis so genannt) heissen sondern immer unterschiedliche Namen haben. Damit müsste ich den Zielordner irgendwie einer Variablen zu ordnen.

    MfG


    • Bearbeitet Stefan32 Sonntag, 12. Januar 2020 14:00
    Sonntag, 12. Januar 2020 13:57
  • Aus Sicherheitsgründen empfehle ich immer erst eine (ggf. verifizierte) Kopie und dann das Löschen:

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-item?view=powershell-7

    Übrigens gibt es da auch ein fertiges Programm, dass sowas "spielend" leistet.
    https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/robocopy

    Die Option "/MIR" könnte da helfen.

    Sonntag, 12. Januar 2020 14:01
  • die Dateien sollen dann verschoben werden. In dem Ordner 1 ist dann nur der neu erstellte Ordner 1 und in diesem befinden sich dann die Dateien.

    Wenn ich Dich richtig verstanden habe, möchtest Du die Dateien einfach eine Ordner-Ebene "tiefer" schieben, richtig?

    Der Anfang war ja schon super ... 

    $FolderList = Get-ChildItem 'Mein Arbeitsverzeichnis' -Directory
    
    foreach ($FolderItem in $FolderList) {
        $NewFolder = Join-Path -Path $FolderItem.FullName  -ChildPath $FolderItem.BaseName
        New-Item -Path $NewFolder -ItemType Directory 
        Get-ChildItem -Path $FolderItem.FullName -File |
            Move-Item -Destination $NewFolder
    }


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 13. Januar 2020 00:18
  • Hallo,

    vielen Dank für den Code. Nun hat alles wunderbar geklappt. Eine Frage habe ich aber noch und zwar will ich das Powershell in der nun erstellten Ordnerstruktur

    --> Hauptordner

    -> Ordner 1 -> Ordner 1 (mit Dateien)

    -> Ordner 2 -> Ordner 2 (mit Dateien)

    nach einer Exe Datei sucht und mir die Dateigröße in MB an einer bestimmten Stelle in einem Text setzt.

    Also Beispiel würde das so aussehen:

    "Die Datei ist 123 MB (soll von Powershell jedesmal angepasst werden) groß".

    Powershell erstellt für jeden Ordner eine Text Datei und schreibt dieen Satz rein.D as sollte dann in jedem gerade erstellten Ordner passieren.

    MfG

    Dienstag, 14. Januar 2020 15:00
  • Klingt ein wenig wie eine Frage nach fertigem Code, dabei brauchst Du nur wenige Cmdlets:

    Get-Childitem

    Foreach-Object

    Split-Path

    Out-File

    Im Prinzip sieht das fast so aus wie das Sample von BOFH...


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Dienstag, 14. Januar 2020 16:33