將檔案移到單獨的資料夾中

將檔案移到單獨的資料夾中

我有一個資料夾,每天在其中創建多個螢幕截圖“ [projectname].[date].[time].png

所以它看起來像這樣:

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

我希望第一個“點”之前的部分是資料夾名稱,然後將所有內容移至相應的資料夾中。

所以結果將如下所示:

├── 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

我發現了類似的東西這個Powershell貼文和這個命令帖子,但我無法讓它適合我的情況。

有人可以幫我解決這個問題嗎?

答案1

像這樣,將此程式碼貼到記事本中,並使用您想要的名稱儲存,但副檔名為 *.bat。接下來將項目(圖像)所在的資料夾拖放到批次檔...

@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

在此輸入影像描述

答案2

使用 Powershell,請嘗試以下操作:

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

相關內容