1

У меня есть несколько файлов для переименования.

Например: ERKS 400001_thumb.jpg ERKS 500124_thumb.jpg ERKS 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
Как я могу переименовать файлы?

4 ответа4

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", как вы. опишите в своем вопросе.

Thumb Named JPG Files Only

@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

НОТА:


Дополнительные ресурсы

1

Следующий фрагмент кода показывает два возможных решения:

Скрипт (обратите внимание, что рабочая команда 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"

==>
0

Это кусок кода, который у меня был некоторое время. Предлагает вам ввести суффикс (jpg), затем строку target (_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, не вводя ничего, если вы хотите, чтобы замена была пустой (без символа).

0

Если вы получили

00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg

остальное кусок пирога. Поскольку ваши файлы имеют одинаковую длину символа, просто выполните

ren *.jpg ????????.jpg

и у вас будет:

00400001.jpg 00500124.jpg 00100004.jpg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .