PowerShell Dateien finden und verschieben

  • PowerShell

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von BornToBeRoot.

    PowerShell Dateien finden und verschieben

    Hallo zusammen,
    leider hat die Forum Suche kein passendes oder ähnliches Thema ausgespuckt, vielleicht kann mir jemand von euch weiterhelfen. Ich würde gerne per PowerShel in mehren Ordner mit Unterordner nach bestimmte Dateien suchen und bei Fund in einen anderen Ordner verschieben. Die Haupt Ordner haben immer unterschiedliche Namen, die in den Haupt Ordner befindliche Unterordner haben immer den selben Ordner Namen, die Dateien brauchen nur in den in den Unterordner (Beispiel:Rechnung) gesucht werden.
    Beispiel Ordnungsstruktur:
    C:\Test\Maxi\Rechnung
    C:\Test\Peter\Rechnung
    C:\Test\Silvia\Rechnung
    C:\Test\Nicole\Rechnung
    usw.
    Die Dateien, die gesucht- und verschoben werden sollen, sind nicht zu 100% identisch, haben aber alle ein Erkennungsmerkmal (Beispiel: -Abfrage-).
    Beispiel Dateien:
    Maxi-Abfrage-.doc
    Peter-Abfrage-.doc
    Silvia-Abfrage-.doc
    Nicole-Abfrage-.doc
    usw.
    Nun noch dazu drei Fragen:
    1. ist es möglich das abgefragt wird welcher der Unterordner und welche Datei gesucht werden soll?Beispiel:Abfrage bzw. Meldung: welcher Unterordner soll durchsucht werden?, anschließend welche Datei soll gesucht werden?. Bei der Frage nach den Dateinamen würde das Erkennungsmerkmale festgelegt werfen welches immer mit Bindestrich beginnt und endet. Beispiel: Bei Antwort Abfrage wird nach den Dateinamen .......-Abfrage- gesucht und bei Antwort Test wird nach ......-Test-gesucht.
    2. Kann durch eine weitere Abfrage der Ziel Ordner angeben werden?
    3. ist ein einfacher Bericht (Erstellung einer .txt oder Excel) über das verschieben der gefundenen Dateien möglich?
    Ich hoffe ich habe es verständlich niedergeschrieben und mir kann einer von euch helfen, für mich als totaler PowerShell Laie ist das nicht zu schaffen.
    Gruß
    knuepel




    Ich habe mal versucht es als VBS zu Realisieren, leider klappt es nicht. Vielleicht kann mir jemand dabei helfen.


    Quellcode

    1. Const BASEFOLDER = "D:\Users\Desktop\Neuer Ordner"
    2. Dim arrFoundFiles(),cnt, strFind
    3. cnt = 0
    4. Set fso = CreateObject("Scripting.FileSystemObject")
    5. Set objShell = CreateObject("Wscript.Shell")
    6. Do While cnt = 0
    7. strFind = InputBox("Bitte zu suchenden Dateinamen eingeben:","Eingabe","Beispiel.pdf")
    8. If strFind = False Or strFind = "" Then Exit Do
    9. FindFilesRecursive fso.GetFolder(BASEFOLDER),strFind
    10. If cnt = 0 Then
    11. If MsgBox("Die Suche war nicht erfolgreich. Möchten sie die Eingabe wiederholen?",vbYesNo Or vbQuestion) = vbNo Then
    12. Exit Do
    13. End If
    14. Else
    15. If MsgBox("Die Suche hat folgende Dateien gefunden: " & vbNewLine & vbNewline & Join(arrFoundFiles,vbNewLine) & vbNewLine & vbNewLine & "Möchten sie diese nun verschieben?", vbQuestion Or vbYesNo) = vbYes Then
    16. For Each file In arrFoundFiles
    17. Move file
    18. objFileSystem.MoveFile "D:\Users\Desktop\Test", True
    19. End If
    20. End If
    21. Loop
    22. Function FindFilesRecursive(objFolder, strSearch)
    23. if fso.FileExists(objFolder.Path & "\" & strSearch) Then
    24. ReDim Preserve arrFoundFiles(cnt)
    25. arrFoundFiles(cnt) = objFolder.Path & "\" & strSearch
    26. cnt = cnt + 1
    27. End If
    28. for each file in objFolder.Files
    29. If LCase(fso.GetExtensionName(file.Name)) = "lnk" Then
    30. strTarget = objShell.CreateShortcut(file.Path).TargetPath
    31. For Each f In Array("Rechnung")
    32. If fso.FolderExists(strTarget & "\" & f) then
    33. FindFilesRecursive fso.GetFolder(strTarget & "\" & f),strSearch
    34. End if
    35. Next
    36. End If
    37. Next
    38. For Each subfolder In objFolder.SubFolders
    39. FindFilesRecursive subfolder, strSearch
    40. Next
    41. End Function


    Verschoben. Beiträge zusammengefügt. ~Thunderbolt
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Thunderbolt“ ()

    Na dann mal ran an die Suchleiste,
    "Powershell tutorial" eingeben,
    uuuuuuund Los! Äh... ich meine natürlich Enter:
    docs.microsoft.com/de-de/power…ripting?view=powershell-6
    msdn.microsoft.com/en-us/library/dd878321(v=vs.85).aspx

    (Hab mir das nur kurz angesehen, scheint aber relativ nützlich zu sein)
    computerperformance.co.uk/powershell/
    2 Zeilen in Powershell...

    C#-Quellcode

    1. foreach($item in (Get-ChildItem -Recurse -Path "C:\Test" | Where-Object {$_.Name -like "*RECHNUNG.txt*"}))
    2. {
    3. Move-Item -Path $item.FullName -Destination "C:\YOURPATH\$($item.Name)"
    4. }
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Danke BornToBeRoot,

    das ist doch schon mal eine Basis womit ich was anfangen kann, ich werde mal versuchen weiter zu basteln bis die gewünschten Funktionen alle vorhanden sind.
    Schon jetzt die erste Frage:
    mit -force werden doch schon vorhandene Dateien im Zielordner überschrieben oder, was muss ich anhängen das bei schon vorhandene Datei im Zielordner trotzdem verschoben wird und eine (2) im Dateinamen erzeugt wird?
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(