
Мне нужно переименовать несколько файлов.
Например: ERKS 400001_thumb.jpg ЭРКС 500124_thumb.jpg ЭРКС 100004_thumb.jpg
Я хочу переименовать указанные выше файлы следующим образом:
Например: 00400001.jpg 00500124.jpg 00100004.jpg
Я использовал этот код, но не смог получить нужный мне результат.
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2!.!part3!"
)
GOTO EOF
Если я запущу приведенный выше код, то результат будет следующим:
Например: 00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpgКак переименовать файлы?
решение1
Вам нужно будет использовать следующий синтаксис для того, что вы объясняете в этом конкретном случае. Вам нужно добавить дополнительный разделитель подчеркивание_
символ и также добавить еще один токен так 1-4
. С дополнительным токеном и разделителем я добавил part4
переменную, чтобы дать вам ожидаемый результат.
Поскольку это, кажется, связано с моим ответом вам наэта почта, я подумал, что тоже могу помочь с этим.
Все файлы JPG
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SET "part4=%%~I"
REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF
Если у вас есть папка с файлами JPG, в которых есть слово «thumb», и другими файлами без слова «thumb», вы можете использовать этот скрипт ниже, чтобы изменить только те файлы, в которых есть слово «thumb», как вы описали в своем вопросе.
Только файлы JPG с миниатюрным именем
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*thumb.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SET "part4=%%~I"
REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
ECHO "%SourceDir%\!part1! !part2!!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF
Дополнительные ресурсы
решение2
Следующий фрагмент кода показывает два возможных решения:
!part2:_thumb=!
, видетьРедактировать/Заменить переменную- другой подход не требуетЗадержка расширениявключено
Сценарий(обратите внимание, что операционная RENAME
команда отображается только ECHO
в целях отладки и демонстрации):
@ECHO OFF >NUL
SETLOCAL EnableExtensions DisableDelayedExpansion
SET "SourceDir=D:\bat\SU\Files\1126981" change to meet your circumstances
echo if _thumb part is fixed
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SETLOCAL EnableDelayedExpansion
echo REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2:_thumb=!.!part3!"
ENDLOCAL
)
echo(
echo if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
FOR /F "TOKENS=*" %%g IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
FOR /F "TOKENS=1-4 DELIMS=_. " %%F IN ("%%~g") DO (
echo REN "%SourceDir%\%%~g" "00%%~G.%%~I"
)
)
Выход:
==> D:\bat\SU\1126981.bat
if _thumb part is fixed
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009nail!.jpg"
if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009.jpg"
==>
решение3
Это фрагмент кода, который у меня уже давно есть. Предлагает ввести суффикс (jpg), затем строку назначения (_thumbs) и, наконец, строку замены (оставьте пустым для замены строки пустой строкой).
@echo off
Setlocal enabledelayedexpansion
ECHO Enter the suffix target (e.g. txt, jpg):
Set /P Suffix=
ECHO Enter Target String:
Set /P Pattern=
ECHO Enter Replacement String (or leave blank):
Set /P Replace=
For %%# in ("*.%Suffix%") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern%=%Replace%!"
)
В твоем случае: запустить этот пакетный файл 1-й раз: цель "ERKS " замена "00";безкавычки. Второй запуск: цель "_thumbs" заменена на "". Просто нажмите ENTER, ничего не вводя, если вы хотите, чтобы замена была пустой (без символа).
решение4
Если у тебя есть
00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg
остальное - кусок пирога. Поскольку ваши файлы, похоже, имеют одинаковую длину символов, просто сделайте
ren *.jpg ????????.jpg
и у вас будет:
00400001.jpg 00500124.jpg 00100004.jpg