добавить "текст" в конец нескольких имен файлов

используя код ниже, я добавляю текст в конец имен файлов, которые:

1.mp3
2.mp3

а должно быть:

1text.mp3
2text.mp3

но он изменен на:

1.mp3text
2.mp3text

код:

@ECHO ON

FOR %%A IN ("C:Usersuser123Desktopmp3*.mp2") DO (
    CALL :RenameFiles "%%~A" "%%~NXA"
)
GOTO EOF

:RenameFiles

SET fname=%~2
SET renname=%fname=%
REN "%~1" "%renname%text%"
GOTO E
21
задан kenorb
23.04.2023 7:53 Количество просмотров материала 2511
Распечатать страницу

3 ответа

как добавить текст в конец несколько имен файлов.

перед: 1.МР3 2.в mp3

после: 1text.МР3 2text.в mp3

в вашем пакетном файле есть несколько ошибок, например:

  • *.mp2 должно быть *.mp3
  • goto E - метка :E отсутствует.
  • вам не нужно call ничего.

простой рабочей партии файл

rem @echo off
setlocal
setlocal enabledelayedexpansion
for %%a in ("C:\Users\user123\Desktop\mp3\*.mp3") do (
    copy "%%a" "%%~dpnatext%%~xa"
    del "%%a" 
)
endlocal

Примечания:

  • пакетный файл будет работать с любой длиной имени файла, так например, 12345.mp3 будет переименовать в 12345text.mp3

cmd Shell решение

вам не нужно использовать пакетный файл. Вы можете просто использовать:

cd C:\Users\user123\Desktop\mp3\
ren ?.mp3 ?text.mp3

или:

ren *.mp3 ?text.mp3

обратите внимание, что после не работы:

ren *.mp3 *text.mp3

вы получите имена, как 1.mp3text.mp3 С этой команды.

пример:

F:\test>dir *.mp3
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/11/2015  12:52                 0 1.mp3
29/11/2015  12:52                 0 2.mp3
               2 File(s)              0 bytes
               0 Dir(s)  1,777,665,769,472 bytes free

F:\test>ren ?.mp3 ?text.mp3

F:\test>dir *.mp3
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/11/2015  12:52                 0 1text.mp3
29/11/2015  12:52                 0 2text.mp3
               2 File(s)              0 bytes
               0 Dir(s)  1,777,665,769,472 bytes free

Читать Далее

  • индекс A-Z командной строки Windows CMD - отличный справочник для все окон УМК линия, связанная.
  • на - условно выполнить команду для нескольких файлов.
  • параметры - аргумент командной строки (или параметр) - это любое значение, переданное в пакет сценарий.
2
отвечен DavidPostill 2023-04-24 15:41

вы можете добавить текст в конец имени файла (до первой точки, которая обычно в начале расширения) с помощью серии ? это, по крайней мере, столько, сколько оригинальное имя.

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, если вы используете команду в другом пакетном сценарии.

5
отвечен dbenham 2023-04-24 17:58

Это должно быть сделано в пакетном файле? AdvancedRenamer - это бесплатная и очень универсальная программа для переименования файлов и папок в пакетном режиме. Легко решает вашу проблему.

0
отвечен Joris Groosman 2023-04-24 20:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх