|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нумерация файлов в папке |
|
CMD/BAT - [решено] Нумерация файлов в папке
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Здравствуйте, прошу помощи, исходные данные такие:
1. есть общая папка: "k12345" 2. в этой папке есть еще 2-3: "подпапка 1", "подпапка 2" и тд. 3. в этих подпапках лежат файлы .png с названиями: k12345_1.png k12345_2.png k12345_4.png k12345_6.png нужен .bat или .ps1, который мы кладем в папку "k12345" и при выполнении которого файлы в подпапках формата .png нумеруются корректно, а именно: k12345_1.png k12345_2.png k12345_3.png k12345_4.png Заранее прошу прощения, если что-то не так описала, буду очень благодарна за помощь! |
|
Отправлено: 14:15, 13-03-2024 |
Deadooshka Сообщения: 2499
|
Профиль | Отправить PM | Цитировать Вот например. В подпапках есть файлы определённого формата k<пять_цифр>_<цифра>.png. Нужно отсортировать эти файлы по <цифре> и переименовать эти файлы, изменив эту <цифру> на цифру, равную порядковому номеру файла в отсортированном списке файлов подобного формата в подпапке. Правильное условие?
|
Отправлено: 14:51, 13-03-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата Sham:
|
|
Отправлено: 14:57, 13-03-2024 | #3 |
Deadooshka Сообщения: 2499
|
Профиль | Отправить PM | Цитировать А если переименование вызовет коллизию? Циферку меняем, а такой файл в папке уже существует.
|
Отправлено: 15:01, 13-03-2024 | #4 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата Sham:
|
||
Отправлено: 15:42, 13-03-2024 | #5 |
Deadooshka Сообщения: 2499
|
Профиль | Отправить PM | Цитировать тестируйте
get-childitem $PSScriptRoot -Directory | % { $dir = $_; $count = 0; $dir | get-childitem -File | % { if ($_.Name -match '^(k\d+_)(\d+)(\.png)$') { [pscustomobject]@{ N = [int]$matches[2]; M = $matches; O = $_; } } } | sort-object 'N' | % { ++$count; while (test-path ($newpath = join-path $dir.fullname ($name = $_.M[1] + $count + $_.M[3]))) { if ($_.O.fullname -eq $newpath) { return } ++$count; } 'rename: {0} -> {1}' -f $_.O.fullname, $name $_.O.MoveTo($newpath); } } |
Отправлено: 17:33, 13-03-2024 | #6 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Огромное спасибо!
|
Отправлено: 17:54, 13-03-2024 | #7 |
fascinating rhythm Сообщения: 6567
|
Профиль | Отправить PM | Цитировать Подразумевается, что файлы k12345 имеются в разных подпапках.
$tmpAdd = "tmpp" $c = 1 dir $PSScriptRoot -Recurse -Include "*.png" |% { Rename-Item $_ -NewName "$($tmpAdd + $_.name)" } dir $PSScriptRoot -Recurse -Include "*.png" |sort {[int]($_.basename -replace '\D')} |% { Rename-Item $_ -NewName "$(($_.basename -replace "\d+$","$c" -replace "^($tmpAdd)+") + $_.Extension)" $c++ } |
------- Отправлено: 18:00, 13-03-2024 | #8 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать @Echo Off &Cls >nul Chcp 1251 Set "BoxIn=Z:\Box_In" Set "BoxShr=k12345" Set Mask="%BoxShr%_*.png" Set "BoxAdd=Z:\Soft_Arc\123" Set Arc="C:\Program Files\7-Zip\7z.exe" a -mx9 "Z:\Box_Arc\archive.7z" Set /A M=0 Pushd "%BoxIn%\%BoxShr%" || (Echo Folder "%BoxIn%\%BoxShr%" not found &Pause &Exit /B 2) For /R "%BoxIn%\%BoxShr%" %%f In ("%Mask%") Do ( Set /A M+=1 Call Set "@@@%%M%%=Ren "%%f.tmp" "%BoxShr%_%%M%%%%~xf"" Ren "%%f" "%%~nxf.tmp" ) For /F "usebackq tokens=2 delims==" %%f In (`2^>nul Set "@@@"`) Do %%f Popd Pause Exit /B 0 |
------- Отправлено: 10:28, 14-03-2024 | #9 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Всем спасибо, очень выручили и сэкономили много часов времени, обожаю вас!
|
Отправлено: 00:08, 27-03-2024 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке | Negtm | Скриптовые языки администрирования Windows | 4 | 03-02-2017 15:30 | |
CMD/BAT - Проверка существования файлов в папке и копирование файлов в другую | Funbeee | Скриптовые языки администрирования Windows | 2 | 07-09-2016 12:51 | |
CMD/BAT - [решено] Многократное копирование нескольких файлов и нумерация копий. | Metallor | Скриптовые языки администрирования Windows | 5 | 02-01-2016 09:57 | |
Интерфейс - Отображение файлов в папке. | D-IMAN | Microsoft Windows 2000/XP | 4 | 28-11-2011 11:22 | |
CMD/BAT - Обновление файлов в папке | Mirrad | Скриптовые языки администрирования Windows | 0 | 11-02-2011 12:45 |
|