1 / 1 / 0
Регистрация: 30.09.2014
Сообщений: 53

Переименовать файлы с nr.01-_Part_3.pdf на nr.01-_Part_03.pdf

09.02.2019, 17:15. Показов 1646. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день,

У меня есть список файлов:
nr.01-_Part_1.pdf
nr.01-_Part_2.pdf
nr.01-_Part_3.pdf
....
nr.01-_Part_10.pdf
nr.01-_Part_11.pdf и т.д.

Я фильтрую файлы для печати, но проблема в том что они распечатываються не совсем попорядку.
Я вижу решение проблемы в добавлении 0 в имена файлов до nr.01-_Part_9.pdf

Тоесть мне нужно изменить имя с nr.01-_Part_3.pdf на nr.01-_Part_03.pdf для всех файлов где последняя цифра является одиночной.

Как это легче всего реализовать?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$FilesToPrint=Get-ChildItem "$dir\mail" -Exclude `
'*-2.pdf',`
'*-3.pdf',`
'*-4.pdf',`
'*-10.pdf',`
'*-12.pdf',`
'*-15.pdf',`
'*-19.pdf',`
'*-20.pdf',`
'*-21.pdf',`
'*-26.pdf',`
'*-28.pdf' | Sort-Object {$_.name.Substring($_.name.length-9)}
 
foreach($File in $FilesToPrint)
{Start-Process -FilePath $File.fullname -Verb Print -PassThru}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2019, 17:15
Ответы с готовыми решениями:

Как разместить PDF файлы в PDF файле
Есть PDF документ с одной страницей размера 700х500мм, и несколько PDF файлов. Нужно разместить PDF файлы на странице первого PDF файла с...

Autocad 2013. При повторном открытии /dwg не отображаются файлы /pdf, вставка производилась "вставка .pdf"
Приветствую! Работа производилась в autocad 2013. При повторном открытии /dwg не отображаются файлы /pdf, вставка производилась при...

Программно переименовать слой Pdf
Очень долго ищу, пробую, но все еще без ответа. Прошу у Вас совета. Мне необходимо переименовать имена слоев в существующем файле Pdf. Я...

7
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.02.2019, 18:59
Лучший ответ Сообщение было отмечено vorkpallur как решение

Решение

Цитата Сообщение от vorkpallur Посмотреть сообщение
Тоесть мне нужно изменить имя с nr.01-_Part_3.pdf на nr.01-_Part_03.pdf для всех файлов где последняя цифра является одиночной.
Если на экране то, что вы ожидали - уберите ключ -WhatIf и запустите повторно

PowerShell
1
gci "$dir\mail" -Filter nr*.pdf |% {if ($_.BaseName -match '_(\d+)$'){$_ | ren -new (($_.BaseName -replace '(\d+)$',"$($Matches[1].PadLeft(3,'0'))") + $_.Extension) -WhatIf}}
Добавлено через 51 минуту
+ более простой, но менее универсальный вариант:

PowerShell
1
gci "$dir\mail" -Filter nr*.pdf | ?{$_.BaseName -Match '_\d$'} | ren -new {$_.Name -replace '_(\d\.pdf)$','_0$1'} -WhatIf
0
1 / 1 / 0
Регистрация: 30.09.2014
Сообщений: 53
10.02.2019, 00:06  [ТС]
Спасибо KDE777!
Первый вариант отлично отработал!
Если не сложно поясните пожалуйста, что делают вот эти два фрагмента:
PowerShell
1
-match '_(\d+)$')
и
PowerShell
1
-replace '(\d+)$',"$($Matches[1].PadLeft(3,'0'))")
Заранее благодарю!

Пётр
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
10.02.2019, 01:07
Цитата Сообщение от vorkpallur Посмотреть сообщение
-match '_(\d+)$'
В конце имени файла (без расширения), перед символом "_" найти одну или несколько цифр и все найденные цифры сохранить в $Matches[1].

Цитата Сообщение от vorkpallur Посмотреть сообщение
-replace '(\d+)$',"$($Matches[1].PadLeft(3,'0'))"
Заменяем в конце имени строку из цифр, на эту же строку, но дополненную слева нулями, причём дополненную так, чтобы общее число символов было 3. Например, 1 станет 001, 10 -> 010, а 100, 1000 и т.д. останутся без изменения.

https://docs.microsoft.com/en-... work-4.7.2

А подробнее, читайте что такое регулярные выражения, например - https://windowsnotes.ru/powers... a-chast-1/
0
1 / 1 / 0
Регистрация: 30.09.2014
Сообщений: 53
10.02.2019, 01:18  [ТС]
Спасибо Вам за потраченное время и за разъяснения! Тему можно считать закрытой, решение идеально подошло!
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.02.2019, 11:31
KDE777, а зачем дважды "напрягать" регулярные выражения? Сперва -match, затем -replace... $matches содержит группы совпадений, следовательно можно поступить, например, так:
PowerShell
1
ls "$dir\mail" -fi nr*.pdf|%{.({},{ren $_.FullName "$($matches[1])0$($matches[2])"})[$_.Name -match '(.*_)(\d.pdf)']}
Чтобы не гонять данные по конвейеру здесь используется трюк с $matches, а именно проверка на соответствие группой. Иначе говоря, тип Regex вызывается единожды в каждой итерации, а вместо того, чтобы передавать далее данные по конвейеру для переименования файла, из полученных групп формируем новое имя файла, попутно переименовывается файл.
Это личное видение решения задачи.
1
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
10.02.2019, 12:42
Цитата Сообщение от greg zakharov Посмотреть сообщение
а зачем дважды "напрягать" регулярные выражения? Сперва -match, затем -replace... $matches содержит группы совпадений, следовательно можно поступить, например, так
Согласен, хороший/интересный вариант. Только, я бы тогда и foreach убрал. По моему, так наглядней:

PowerShell
1
ls "$dir\mail" -fi nr*.pdf | ? Name -Match '(.+_)(\d\.pdf)' | ren -new {"$($Matches[1])0$($Matches[2])"}
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.02.2019, 13:20
KDE777, кстати, да: ...(\d\.pdf)..., - забыл когда писал пример выше экранировать точку. У вас это в регулярке исправлено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2019, 13:20
Помогаю со студенческими работами здесь

Как создать PDF файл с именем ZAKAZ_(дата сегодня).pdf
Как создать из "Excel таблицы" - PDF файл с именем ZAKAZ_(дата сегодня).pdf при помощи макроса? Есть такой макрос: Sub...

Пакетная конвертация PDF в DOC и печать любых документов на PDF-принтере
В первую очередь извините, если создал тему в неположенном разделе, но к сожалению найти близкий по тематике раздел мне не удалось =(. ...

Как соединить несколько PDF файлов в один документ PDF?
имею распечатку книжки в 45 pdf файлах. как-то неудобно просматривать её. как их все объединить в один pdf файл? Может спец софт необходим?

Как разбить 1-ин pdf документ на множество pdf файлов в соответствии с регулярным выражением ?
Есть документ представляющий собой сборник статей тезисов (c рисунками) в двух формате pdf, задача получить из многостраничного документа...

Как организовать работу PDF, чтоб он искал в PDF файле определенную строку
Имеется код (Он всего лишь создает файл и текст, который указывается в форме) using System; using System.IO; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru