Verschieben von Dateien in separate Ordner

Verschieben von Dateien in separate Ordner

Ich habe einen Ordner, in dem ich mehrere Screenshots pro Tag erstelle [projectname].[date].[time].png.

Es sieht also so aus:

ProjectAlpha.2020-11-10.09-53-21.png
ProjectAlpha.2021-05-20.15-10-43.png
ProjectBeta.2020-11-10.09-53-28.png
ProjectBeta.2021-05-20.15-11-24.png
ProjectBeta.2021-07-27.11-34-42.png
ProjectDelta.2021-05-20.15-19-01.png
ProjectDelta.2021-05-20.15-09-42.png
ProjectDelta.2021-07-27.11-35-03.png

Ich möchte, dass der Teil vor dem ersten „Punkt“ der Ordnername ist und dann alles in den entsprechenden Ordner verschoben wird.

Das Ergebnis sieht also folgendermaßen aus:

├── ProjectAlpha
│   ├── ProjectAlpha.2020-11-10.09-53-21.png
│   └── ProjectAlpha.2021-05-20.15-10-43.png
└── ProjectBeta
│   ├── ProjectBeta.2020-11-10.09-53-28.png
│   ├── ProjectBeta.2021-05-20.15-11-24.png
│   └── ProjectBeta.2021-07-27.11-34-42.png
└── ProjectDelta
    ├── ProjectDelta.2021-05-20.15-19-01.png
    └── ProjectDelta.2021-05-20.15-09-42.png

Ich fand etwas Ähnliches indiese PowershellPosten unddieses CMDPost, aber ich kann es in meiner Situation nicht zum Laufen bringen.

Gibt es bitte jemanden, der mir dabei helfen kann?

Antwort1

Etwa so: Fügen Sie diesen Code in den Editor ein und speichern Sie ihn unter dem gewünschten Namen, aber mit der Erweiterung *.bat. Ziehen Sie anschließend den Ordner, in dem sich die Projekte (Bilder) befinden, per Drag & Drop in die Batchdatei ...

@echo off

:: Please drag and drop the folder where the projects are to this batch script

if exist "%~1" (if not exist "%~1\" exit) else (exit)

set "Folder=%~1"
Set Files=*.jpg *.png *.gif *.webp

pushd "%Folder%"

for /f "delims=" %%a in ('dir /b /a-d /on %Files%') do for /f "delims=." %%b in ("%%~a") do (
                                                                                             if not exist "%%b" md "%%b"
                                                                                             move "%%a" "%%b"
                                                                                            )
exit

Bildbeschreibung hier eingeben

Antwort2

Versuchen Sie mit Powershell Folgendes:

$mypath = Get-Location
$files = Get-ChildItem

$files | Where { $_ -match "project[a-z]+"} | 
ForEach { 
            if ( !( Test-Path -Path $Matches[0] )) { 
                    New-Item -Path   $Matches[0] -ItemType Directory 
                }

            $files = $Matches[0] + "*.*"
            Move-Item -Path $files -Destination $Matches[0] 
    }

verwandte Informationen