PDA

Показать полную графическую версию : Массовое переименование файлов


Super_Kolobok
16-05-2024, 19:50
Добрый день
Интересует решение в виде cmd в переименовании кучи файлов

из
IMG_20240516_173620_676.jpg
Screenshot_2024-05-16-17-22-51-347_com.android.chrome.jpg
20240310_205017.jpg

в такой формат
2024-05-05 10-00-00.jpg

DJ Mogarych
17-05-2024, 10:41
Powershell

$dir = "C:\temp\in"

$files = dir $dir
foreach ($f in $files) {
$n = ($f.BaseName -replace '\D').Substring(0,14)
$newName = "$($n.Substring(0,4))-$($n.Substring(4,2))-$($n.Substring(6,2)) $($n.Substring(8,2))-$($n.Substring(10,2))-$($n.Substring(12,2))$($f.extension)"
$f |Rename-Item -NewName $newName
}

YuS_2
18-05-2024, 09:19
DJ Mogarych, только тут проще переводить всё в дату-время и форматировать выход, чем сабстринить посимвольно
...
$n = [datetime]::parseexact(($f.BaseName -replace '\D').Substring(0,14),'yyyyMMddHHmmss',$null)
$newName = get-date($n) -f 'yyyy-MM-dd HH-mm-ss'
...

megaloman
18-05-2024, 17:50
@Echo Off &Cls &>nul Chcp 1251
Set "BoxIn=Z:\Soft_Arc"
Set "Mask=*.*"
Set "Reg=20[0-9][0-9]-*[0-2][0-9]-*[0-3][0-9]-*_*[0-2][0-9]-*[0-5][0-9]-*[0-5][0-9]"

Pushd "%BoxIn%"||(Echo Folder "%BoxIn%\" not found &Pause &Exit /B 2)
For /F "usebackq delims=" %%f In (`2^>nul Dir "%Mask%" /B /A:-D ^|Findstr /R /C:"%Reg%"`) Do Call :MyRen "%%f"
Popd
Pause
Exit /B

:MyRen
Set "Name=%~1"
Echo %Name%|>nul FindStr /R /C:"^20[0-9][0-9]"||Set "Name=%Name:*_=%"
Set "Name=%Name:_=%"
Set "Name=%Name:-=%"
Ren %1 "%Name:~0,4%-%Name:~4,2%-%Name:~6,2% %Name:~8,2%-%Name:~10,2%-%Name:~12,2%%~x1"
Exit /B

Super_Kolobok
19-05-2024, 16:28
Спасибо




© OSzone.net 2001-2012