вы можете добавить текст в конец имени файла (до первой точки, которая обычно в начале расширения) с помощью серии ?
это, по крайней мере, столько, сколько оригинальное имя.
ren "C:\Users\user123\Desktop\mp3\*.mp3" ??????????????????????text.*
?
жадно сопоставляет и сохраняет любой символ за исключением .
, и может ничего не соответствовать, если у него закончатся символы. Ваш текст затем добавляется, а затем .*
матчи и сохраняет точку и остаток имя.
вы можете изменить маску исходного файла, как вы считаете нужным, чтобы соответствовать любые файлы, которые вы хотите. Маска источника полностью независима от маски переименования.
посмотреть как команда переименования Windows интерпретирует подстановочные знаки? для получения дополнительной информации.
если некоторые из ваших файлов содержат более одного .
в имени, то вы не можете использовать простую команду REN в одиночку. Одним из вариантов является использование пакетного скрипта:
@echo off
pushd "C:\Users\user123\Desktop\mp3\*.mp3"
for /f "delims= eol=:" %%F in ('dir /b /a-d *.mp3') do ren "%%F" "%%~nFtext%%~xF"
popd
Примечание. что очень важно использовать for / F, а не просто FOR. FOR / F собирает весь результат команды DIR перед началом итерации, тогда как simple FOR начинает итерацию после заполнения внутреннего буфера, что добавляет риск переименования одного и того же файла несколько раз.
я использую EOL=:
для защиты от удаленной возможности, что имя файла начинается с ;
. EOL по умолчанию ;
, который игнорирует строки, начинающиеся с ;
. Имена файлов не могут contain :
, поэтому он является безопасным для параметра Эол.
один из незначительных недостатков FOR /F с DIR / B заключается в том, что он не сохраняет информацию о пути, поэтому я использовал PUSHD в начале. Без PUSHD вы могли бы включить информацию о пути в команду DIR, но тогда вам также нужно было бы включить путь в маску источника REN. Следующая строка работает в командной строке (без пакетного сценария):
for /f "delims= eol=:" %F in ('dir /b /a-d "C:\Users\user123\Desktop\mp3\*.mp3"') do @ren "C:\Users\user123\Desktop\mp3\%F" "%~nFtext%~xF"
альтернативой является использование Команда FINDSTR для вывода списка файлов, которая удобно сохраняет информацию о пути:
for /f "delims=" %F in ('findstr /m "^" "C:\Users\user123\Desktop\mp3\*.mp3"') do @ren "%F" "%~nFtext%~xF"
так как каждый файл в списке начинается с буквы диска, безопасно использовать значение по умолчанию EOL=;
.
один последний вариант - вы могли бы использовать мой JREN.BAT регулярное выражение переименовать утилиту. Это чистый скрипт (hybrid JScript / batch), который изначально работает на любой машине Windows, начиная с XP.
jren "(.*)(\.mp3)$" "text" /i /p "C:\Users\user123\Desktop\mp3"
С JREN-это пакетный скрипт, вы бы необходимо использовать вызов JREN, если вы используете команду в другом пакетном сценарии.