Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание папок по части имён файлов и перемещение в них этих файлов

Ответить
Настройки темы
CMD/BAT - Создание папок по части имён файлов и перемещение в них этих файлов

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Floatzel
Дата: 22-07-2025
Описание: upd
Прошу помочь с написанием скрипта.

Имеется: папка с множеством файлов содержащих одинаковую часть в названии.
Например:
image-01.jpg
image-02.jpg
image-03.jpg
image 2-01.jpg
image 2-01.png
image 2-10.jpg
other_ picture 17-01.jpg
other_ picture 17-02.jpg
other_ picture 17-01.png
other_ picture 17-02.png
other_ picture 17-17.png
wallpapers-picture-01.jpg
wallpapers-picture-02.jpg
wallpapers-picture-03.jpg
wallpapers-picture-09.jpg
wallpapers-picture-23.jpg

Нужно: создать папки по начальной части имени файла до последних трех символов (формата "-01" "-02" "-17" и т.д.) и переместить в них файлы содержащие эту часть.
т.е. должны создастся папки:
image
image 2
other_ picture 17
wallpapers-picture

нужно чтобы скрипт работал и в корневой папке и подпапках.

расширение файлов: .jpg, .png, .jpeg

Отправлено: 19:58, 22-07-2025

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Powershell v5
Код: Выделить весь код
$folder = "C:\temp\pictures"

cd $folder
dir -Recurse -File -Include "*.jpg","*.png","*.jpeg" |group {$_.basename -replace '.{3}$'} |% {
    mkdir $_.Name -ErrorAction SilentlyContinue > $null
    if (Test-Path $_.Name) {
        $_.group |mv -Destination $_.Name
    }
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:40, 22-07-2025 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


Цитата Floatzel:
нужно чтобы скрипт работал и в корневой папке и подпапках. »
Как рекурсии с папками избежать. Папки создаёшь, и потом туда же лезешь и внутри получается опять создаёшь. Надо чтобы не лезть туда - или префикс какой-нибудь в имени папки, или переименование файлов при перемещении.

Отправлено: 22:46, 22-07-2025 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Скрипт выше создаёт папки на верхнем уровне, а файлы вытаскивает из всех папок рекурсивно.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:09, 22-07-2025 | #4


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Floatzel, cmd
Код: Выделить весь код
@Echo Off &Cls
	Set "BoxIn=Z:\Soft_In"
	Pushd "%BoxIn%"||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 2)

	For /f "usebackq delims=" %%f IN (`2^>nul Dir /b /s /A:-D  "%BoxIn%\*-??.*" ^|FindStr /R /C:"-..\..*$"`) Do (
		Set "DirName=%%~nf"
		Call Set "DirName=%%DirName:~0,-3%%"
		2>nul Call MD "%%DirName%%"
		>nul Call Move /Y "%%f" "%%DirName%%\"
	)
	For /F "usebackq delims=" %%d In (`2^>nul Dir /b /s /A:D  "%BoxIn%\" /S /B /A:D ^|Sort /R`) Do 2>nul RD "%%d"
Pause   
Exit /B 2
Путь к исходной папке укажите свой вместо Z:\Soft_In
После перемещения файлов пустые папки удаляются (последний For)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-07-2025 в 05:20.


Отправлено: 21:50, 24-07-2025 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Создание папок по части имён файлов и перемещение в них этих файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Перемещение файлов в папки, названные по части имен файлов NuclearBox Скриптовые языки администрирования Windows 5 13-02-2021 16:26
CMD/BAT - [решено] Создание подпапок и перемещение в них файлов bkmz24 Скриптовые языки администрирования Windows 2 11-09-2019 09:39
Любой язык - [решено] Создание папок по имени и перемещение файлов xan08 Скриптовые языки администрирования Windows 19 06-07-2019 12:11
CMD/BAT - [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки mezzin Скриптовые языки администрирования Windows 4 10-12-2016 21:11
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов KamikadZZe Скриптовые языки администрирования Windows 1 01-09-2011 14:15




 
Переход