Добавить к имени файла символ powershell
Описывает использование подстановочных знаков в PowerShell.
Подробное описание
Символы-шаблоны представляют один или несколько символов. Их можно использовать для создания шаблонов Word в командах. Выражения с подстановочными знаками используются с -like оператором или с любым параметром, который принимает подстановочные знаки.
Например, чтобы сопоставить все файлы в C:\Techdocs каталоге с .ppt расширением имени файла, введите:
В этом случае * подстановочный знак звездочки () представляет все символы, которые отображаются перед .ppt расширением имени файла.
Выражения с подстановочными знаками проще регулярных выражений. Дополнительные сведения см. в разделе about_Regular_Expressions.
PowerShell поддерживает следующие подстановочные знаки:
Подстановочный знак | Описание | Пример | Соответствует | Нет совпадений |
---|---|---|---|---|
* | Совпадение с нулем или несколькими символами | a* | aA, AG, Apple | банан |
? | Совпадение с одним символом в этой позиции | ? n | Объект, в, на | обнаружил |
[ ] | Совпадение с диапазоном символов | [a-l ] УК | книга, Кука, взгляд | была |
[ ] | Совпадение с конкретными символами | [BC ] УК | книга, Кука | ключ |
В один шаблон Word можно включить несколько подстановочных знаков. Например, чтобы найти текстовые файлы с именами, начинающимися с букв a до l, введите:
Многие командлеты принимают подстановочные знаки в значениях параметров. Раздел справки для каждого командлета описывает, какие параметры принимают подстановочные знаки. Для параметров, которые принимают подстановочные знаки, их использование не учитывает регистр.
Подстановочные знаки можно использовать в командах и блоках скриптов, например для создания шаблона Word, представляющего значения свойств. Например, следующая команда получает службы, в которых значение свойства serviceType включает Interactive.
В следующем примере If инструкция включает условие, которое использует подстановочные знаки для поиска значений свойств. Если Описание точки восстановления включает PowerShell, команда добавляет значение свойства CreationTime для точки восстановления в файл журнала.
Всё о PowerShell в Windows и на Linux. Системное администрирование Windows
Подстановочные знаки представляют один или несколько символов. Вы можете использовать их для создания шаблонов слов в командах. Например, чтобы получить список всех файлой в каталоге C:\Techdocs с расширением в имени файла .ppt, введите:
В этом случае подстановочный знак звёздочка (*) представляет любые символы, которые появляются перед расширением имени файла .ppt.
PowerShell поддерживает следующие подстановочные знаки:
Подстановочный знак | Описание | Пример | Соответствие | Не совпадает с |
* | Соответствует нулю или более символов | a* | aA, ag, Apple | banana |
? | Соответствует одному символу в этой позиции | ?n | an, in, on | ran |
[ ] | Соответствует диапазону символов | [a-l]ook | book, cook, look | took |
[ ] | Соответствует определённым символам | [bc]ook | book, cook | hook |
В один и тот же шаблон слова можно включить несколько подстановочных знаков. Например, чтобы найти текстовые файлы с именами, начинающимися с букв от A до L, введите:
Многие командлеты принимают подстановочные знаки в значениях параметров. Раздел справки для каждого командлета описывает, какие параметры принимают подстановочные знаки. Для параметров, которые принимают подстановочные знаки, их использование нечувствительно к регистру.
Вы можете использовать подстановочные знаки в командах и блоках скриптов, например, для создания образца слова, представляющего значения свойств. Например, следующая команда выводит службы, в которых значение свойства SERVICETYPE включает INTERACTIVE.
В следующем примере оператор If включает условие, в котором используются подстановочные знаки для поиска значений свойств. Если DESCRIPTION точки восстановления включает POWERSHELL, команда добавляет значение свойства CREATIONTIME точки восстановления в файл журнала.
Переименование файлов в проводнике
Один файл переименовать легко, можно нажать на него правой кнопкой мыши и выбрать переименовать, после чего написать нужное название. Также один файл можно переименовать с помощью клавиши F2, дополнительных настроек проводника и т.д. Но что делать, если у нас порядка 40 файлов и их все нужно переименовать? Можно тыкать на каждый по отдельности, а можно переименовать их всех одним махом.
1.Откройте любую папку, вложите туда все файлы, которые вы хотите переименовать.
3. Выделите все файлы, которые вы хотите переименовать: выбираем первый и удерживая клавишу Shift стрелкой вниз выделяем все файлы (или нажмите клавиши Ctrl+A на клавиатуре).
Переименование файла с помощью командной строки
С помощью командной строки можно переименовать большое количество файлов, а также с помощью той же команды можно изменить расширение всех файлов в папке.
1.Откройте командную строку в папке с нужными файлами: зайдите в папку с файлами для переименование и в адресной строке введите cmd, после чего нажмите Enter. После данных действий откроется командная строка в данной папке.
3.Таким способом мы сменили расширение для группы файлов.
Переименование нескольких файлов с помощью PowerShell
Результат на лицо 🙂
В PowerShell много различных вариантов переименования и это только малость того, что умеет данный инструмент, но об этом в другой раз.
Переименовать группу файлов с помощью Total Commander
Если у вас установлен файловый менеджер Total Commander, то вы можете воспользоваться им для переименование большого количества файлов:
1.Откройте Total Commander.
2. Зайдите в папку, файлы которой вы хотите переименовать.
3. Выделите все файлы, которые вы хотите переименовать (с помощью клавиш Ctrl+A можно выделить всё в папке, или с помощью удерживания клавиши Shift и нажатия на стрелки).
Невинный пост в группе ВК о сочетании клавиш проводника Ctrl + Shift + N внезапно зацепил приверженцев альтернативных файловых менеджеров. По ходу дела всплыла тема массового переименования файлов.
Евгений Генеральчик подметил, что в отличие от Total Commander, проводнику не по зубам переименование 20 тысяч файлов, например, добавление к имени файла текущей даты. Действительно, в классической серии пенальти я сам признал незаменимым сочетание Ctrl + M в TC, сфокусировавшись на функции поиска/замены.
Однако, отвечая Евгению в ВК, я заметил, что его задачу переименования решу в PowerShell и даже ванлайнером . Написал и подумал – надо все-таки решить, а то вдруг попросят пруфов :)
[+] Сегодня в программе
Переименование файлов методом «поиск / замена»
Через несколько минут у меня получился такой вариант:
На самом деле в команде одна строка, а на две я ее разбил, чтобы она лучше читалась. Давайте разберем составляющие команды.
Выборка файлов
Для получения списка файлов я использую командлет Get-ChildItem. Он же gci, он же ls, он же Элла Кацнельбоген dir, а эта команда прекрасно знакома всем, кто написал хоть один батник .
- -Path $env:userprofile\Downloads – файлы ищутся по заданному пути, т.е. в папке Downloads в профиле пользователя
- -Filter "*.zip" – фильтруются только файлы с расширением ZIP. Впрочем, в выборку попадут также и файлы, содержащие в имени ".zip", но этим я пренебрегу. В принципе, можно не указывать параметр, а просто написать .zip.
- -Recurse – поиск ведется рекурсивно, т.е. во всех вложенных папках. Кстати, в PowerShell 5.0, т.е. в Windows 10, у gci появился новый параметр -Depth, задающий глубину рекурсии. Например, 0 – только текущая папка, 2 – на два уровня вглубь.
Выбранные файлы по конвейеру передаются дальше для переименования.
Переименование файлов
Командлет Rename-Item тоже обладает хорошо известным псевдонимом ren. С помощью параметра -NewName задается новое имя, а в фигурных скобках стоит выражение, задающее условия переименования
Переименование файлов путем добавления счетчика
По ходу обсуждения в ВК выяснилось, что пример с датой надуманный, а более реальной выглядит последовательная нумерация файлов. Действительно, в TC я часто использовал очень удобный счетчик [C] для переименования графических файлов.
В PowerShell его тоже можно реализовать. Допустим, надо добавить счетчик из трех цифр в конце имени всех файлов JPG в текущей папке. Команда может быть такой:
С выборкой все понятно, поэтому давайте разберем переименование.
Примечание о блоках скриптов
Существует три типа блоков:
Дискуссия
Графический интерфейс TC понятнее, нагляднее и не требует специальной подготовки. Однако бывают ситуации, когда вы не сможете воспользоваться любимым инструментом. Например, его нет в системе, а установить нельзя, поскольку ПК изолирован от внешней среды или это запрещено политикой организации. Если вы не ленитесь расширять свой кругозор и не упускаете случая поковырять PowerShell, вы с честью выйдете из такой ситуации.
Кстати, в ближайших записях я познакомлю вас с некоторыми новыми возможностями платформы PowerShell 5.0, включенной в Windows 10.
Расскажите в комментариях, какую задачу вы в последний раз решали:
- с помощью PowerShell или другого скриптового языка
- средства для массового переименования в любимом файловом менеджере
Я благодарю Василия Гусева за ценные дополнения, которые я добавил в статью после публикации.
Вадим - владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.
Вас также может заинтересовать:
Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.
комментариев 50
Ваша оценка: +2Паша, спасибо, я учту.
Ваша оценка: 0 Ваша оценка: 0 Ваша оценка: 0Алекс, вы же ИТ-специалист? Тогда базовым английским владеете, а суть командлетов понятна из названия. Я их намного лучше понимаю, чем синтаксис команды FOR из CMD, который я так и не осилил, и без знания которого такие задачи не решаются.
Ваша оценка: +1 Ваша оценка: 0Можно и функцию написать, было бы желание (у меня его нет :)
Ваша оценка: 0Billy Kid
Ваша оценка: 0 Ваша оценка: 0Billy Kid
Ваша оценка: 0 Ваша оценка: 0Оно то переименовало, только что вы с такими похабными именами делать будете?
Живой пример, надо загрузить галерею фоток к статье на новостной сайт.
Заливать как DSCN0005.JPG и т.п. не вариант, так как редактор потом никогда не разберется какие фотки откуда. Принято правило именовать фотки как имя_статьи-00N.JPG, все латиницей и без пробелов. Как это сделать проводником?
Скриптом без проблем, хотя мы используем Bulk Rename.
Ваша оценка: +1Billy Kid
Ваша оценка: -1Ваши примеры того, что вы не читали статью, больше не нужны, спасибо.
Ваша оценка: 0Ладно, статью вы не поняли, давайте тогда про другое: а если надо будет в какой-то тег каждого файла записать его номер, который присутствует в имени этого же файла, вы это сможете сделать проводником для 640 файлов?
Ваша оценка: 0Для сортировки файлов были написаны адские батники, которые могли:
— Устранять копии. В первой версии файлы сравнивались каждый с каждым при помощи утилиты fc /b (fc умеет устанавливать errorlevel), но этот алгоритм имеет квадратичную сложность (время O(N²)), поэтому для больших наборов он уже не подходил. Стал перемещать файлы в каталог с именем из хеш-кода (вычисленного утилитой fciv.exe). Затем другой скрипт обходил подпапки и сохранял только самый первый файл из каждой из них (остальные удалял).
— Добавлять примерную дату создания к имени каждого архива. Архив извлекался во временную папку с восстановлением точного времени всех временных штампов (winrar x -ts arc.rar temp\), циклом for /r перебирались все файлы и выбиралась самая поздняя дата модификации.
— Сортировать архивы по содержимому. Утилитой rar.exe извлекался листинг каждого архива, команда find определяла наличие ключевого слова (она тоже устанавливает errorlevel в зависимости от результата), при успешном обнаружении архив перемещался в соответствующую подпапку.
О существовании средства массового переименования файлов в Far Manager’е я ничего не знаю, возможно есть соответствующие плагины, искать не пробовал.
В некоторых простых случаях для массового переименования/копирования файлов в Far я сначала создавал список файлов в новом текстовом файле:
dir /b *.abc > rename.bat
Затем правил rename.bat встроенным редактором, как правило, записывая макрокоманду. Потом нажимал горячую клавишу макрокоманды (как правило, Ctrl+Alt+↓) для каждой строчки в файле.
Либо просто записывал макрокоманду, которая в командной строке Far’а формирует команду переименования файла под курсором, тут же её выполняет (нажимает Enter) и переходит к следующему файлу (нажимает ↓). И опять давил на горячую клавишу десяток-другой раз.
Возвращаясь к cmd.exe. Мне кажется, я слишком хорошо знаю обычную командную строку, чтобы заставить себя начать изучать PowerShell. Нумерация файлов в текущем каталоге:
Добавление текущей даты будет отличаться использованием %DATE% вместо %SUF:
-3% в процедуре RENAME. Недостаток по сравнению с однострочником PowerShell — нужно создавать файл. И я тоже не помню наизусть все ключи команд set и for, но их всегда можно посмотреть командами set /? и for /?.
Читайте также: