Переименование возрастающего целочисленного имени в возрастающее целое - PullRequest
0 голосов
/ 15 апреля 2020

Можете ли вы показать мне способ решения следующей проблемы с Powershell или CMD ?

Это мои имена файлов в папке.

002.mp3
003.mp3
.
.
.
604.mp3

Я хочу изменить это число на;

001.mp3
002.mp3
003.mp3
.
.
.
603.mp3

Но важно то, что так должно быть

002.mp3 to 001.mp3
003.mp3 to 002.mp3
...
...
...
604.mp3 to 603.mp3

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2020

Вы можете сделать следующее:

$files = Get-ChildItem -Path "C:\PathToMP3Files\[0-6][0-9][0-9].mp3" -File
$files | Rename-Item -NewName {"{0:D3}.mp3" -f ([int]$_.BaseName - 1)} -whatif

Просто удалите параметр -whatif, чтобы выполнить переименование, если вы удовлетворены результатами.

Объяснение:

Параметр -Path в Get-ChildItem поддерживает подстановочные знаки. Используя диапазон подстановочных знаков [0-6] (один символ из набора от 0 до 6), вы можете сузить целевые элементы.

, поскольку New-Item 's -NewName поддерживает задержку привязка скрипта, вы можете направить ваши объекты FileInfo непосредственно в команду. Параметр -NewName управляет свойством Name объекта. Приведенный выше код использует BaseName, то есть Name без расширения, потому что это простой способ выполнить увеличение di git.

-f - оператор форматирования строки. Он выполняет подстановку {number} значений в строке. Номер соответствует индексу предмета в коллекции, предоставленной справа от -f.

2 голосов
/ 16 апреля 2020

Это проще в пакетном файле и работает быстрее, чем PS! (просто попробуйте)

@echo off
setlocal EnableDelayedExpansion

for /F %%a in ('dir /B *.mp3') do set /A "n=1%%~Na-1" & ren "%%a" "!n:~1!.mp3"

Yoy может даже сделать это непосредственно в командной строке без необходимости файла .bat; просто убедитесь, что переменная n не существует (выполняется set "n=" раньше):

for /F %a in ('dir /B *.mp3') do @set /A "n=1%~Na-1" & call ren "%a" "%n:~1%.mp3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...