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
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]
}