PowerShell Programmierung

Status
Nicht offen für weitere Antworten.

G4m3R_239

Moderator
Themen-Ersteller
Mitarbeiter
Dez 14, 2018
3.393
2.736
Hallo Zusammen,

ich habe eine Frage ob sich jemand mit einer PowerShell Programmierung auskennt.

Grob umschrieben geht es um folgendes:

PDF-Dateien sollen automatisierte im Explorer in Order verschoben werden

Beispiel:

Dateiname: XYZ_12345_PM_Test.pdf

Soll in den Ordner 12345 und dort in den Unterordnung PM verschoben werden.
Dies soll nun für ca. 100 Dateien erfolgen.

Kann mir dabei jemand helfen bzw ist das einfach zu realisieren?
 

TheSupercomputer

Administrator
Mitarbeiter
Nov 3, 2018
12.591
10.258
Mit C++ könnte ich dir recht schnell was fertig machen.
Mit PS habe ich aber leider zu wenig Erfahrung.
 

G4m3R_239

Moderator
Themen-Ersteller
Mitarbeiter
Dez 14, 2018
3.393
2.736
Kann ich den C++ Code automatisierte ausführen lassen und welches Programm wäre dazu notwendig?
 

Whyzky

Aktives Mitglied
Jun 20, 2023
56
12
Hallo,

ich habe von PowerShell leider keinen Plan, aber bei so einer (meiner Einschätzung nach) simplen Aufgabe kann man als Orientierung auch ChatGPT heranziehen und mal schauen, was der so an Quellcode hervorbringt:

Code:
# Pfad zum Verzeichnis, in dem sich die PDF-Dateien befinden
$sourcePath = "C:\Pfad\Zu\Ihren\PDF-Dateien"

# Durchlaufen Sie jede PDF-Datei im Quellverzeichnis
Get-ChildItem -Path $sourcePath -Filter *.pdf | ForEach-Object {
    $fileName = $_.Name
    $folderName = $fileName -match "_(\d+)_([A-Z]+)_Test.pdf"
    
    # Wenn das Dateiformat stimmt, verschieben Sie die Datei in den entsprechenden Ordner
    if ($folderName) {
        $destinationFolder = Join-Path $sourcePath "$matches[1]\$matches[2]"
        if (-not (Test-Path $destinationFolder)) {
            New-Item -ItemType Directory -Path $destinationFolder | Out-Null
        }
        
        $destinationPath = Join-Path $destinationFolder $fileName
        Move-Item -Path $_.FullName -Destination $destinationPath -Force
        Write-Host "Die Datei '$fileName' wurde nach '$destinationPath' verschoben."
    } else {
        Write-Host "Die Datei '$fileName' hat nicht das erwartete Format und wurde nicht verschoben."
    }
}

Weiterhin habe ich gefragt, wie man das Skript ausführen lassen kann:

Um das PowerShell-Skript auszuführen, können Sie die folgenden Schritte befolgen:

  1. PowerShell starten: Öffnen Sie die PowerShell-Konsole auf Ihrem Computer. Sie können dies tun, indem Sie "PowerShell" in das Startmenü oder die Suchleiste eingeben und die passende Anwendung auswählen.
  2. Ausführungsrichtlinie ändern (optional): Je nach den Sicherheitseinstellungen Ihres Systems müssen Sie möglicherweise die Ausführungsrichtlinie ändern, um das Skript auszuführen. Führen Sie dazu den Befehl aus:
    powershellCopy code
    Set-ExecutionPolicy RemoteSigned
    Wählen Sie "Ja" oder "A" für Alle aus, wenn Sie dazu aufgefordert werden. Beachten Sie, dass dies die Ausführungsrichtlinie temporär ändert.
  3. Skript speichern: Kopieren Sie das oben bereitgestellte Skript in einen Texteditor wie Notepad und speichern Sie die Datei mit der Erweiterung ".ps1" (z. B. "VerschiebePDFs.ps1").
  4. Skript ausführen: Navigieren Sie in der PowerShell-Konsole zum Verzeichnis, in dem sich Ihr Skript befindet. Verwenden Sie dann den Befehl:
    powershellCopy code
    .\VerschiebePDFs.ps1
    Drücken Sie Enter, um das Skript auszuführen.
Bitte beachten Sie, dass je nach den Sicherheitseinstellungen Ihres Systems und der PowerShell-Version möglicherweise zusätzliche Schritte erforderlich sind. Falls das Ausführen des Skripts aufgrund von Berechtigungsproblemen fehlschlägt, können Sie versuchen, die Ausführungsrichtlinie wieder auf den ursprünglichen Wert zurückzusetzen oder das Skript mit Administratorrechten auszuführen.

Du kannst die Funktionsfähigkeit ja mal mit ein paar Testdateien validieren lassen und/ oder auf der Basis weiter mit der PowerShell-Syntax beschäftigen. Oder du fängst bei den Basics in der Dokumentation an, wenn dir ein grundsolides Verständnis wichtig ist.

Kann man so oder so machen :D
 

Zaradur

Ehrenmitglied
Dez 10, 2022
2.243
1.013
Also mit der Powershell habe ich jetzt keine Erfahrung.

Im Netz finde ich die Batch Datei File2folder nicht mehr.

Aber folgendes kannste in ner Textdatei speichern und dann einfach die Dateiendung in bat ändern.
Die bat dann in das Verzeichnis mit den Pdf's packen und ausführen.
Dann erstellt er für jede Pdf nen Verzeichnis und verschieb die datei dahin.

@echo off
for %%a in (*.*) do (
md "%%~na" 2>nul
move "%%a" "%%~na"
)
 

G4m3R_239

Moderator
Themen-Ersteller
Mitarbeiter
Dez 14, 2018
3.393
2.736
Hab es tatsächlich mit Hilfe von ChatGPT und einer sehr einfach/statischen Programmierung lösen können. Danke für eure Hilfe!
 
  • Gefällt mir!
Reactions: Zaradur
Status
Nicht offen für weitere Antworten.