У меня есть несколько файлов, таких как:

f0110_01_online.png

f0122_01_01_online.png

f0122_0201_online.png

В каждом имени файла есть общий текст «_online».

Я просто хочу удалить '_online' из каждого filenaeme с помощью однострочной программы в файле .bat, потому что каждый раз, когда filenamses и количество файлов будут меняться.

Я стараюсь:

ren * _online.png * .png

но это не работает.

Пожалуйста, предложите мне правильный способ сделать это в командном файле

2 ответа2

1

Возможно, вас заинтересует ответ на вопрос Как команда Windows RENAME интерпретирует подстановочные знаки?

К сожалению, одна команда REN не может дать вам желаемый результат. Вы можете удалить online используя ren *_online.png *_.png , но удаление _ невозможно только с помощью одной команды REN.

Самое простое решение с использованием собственных команд - это небольшой командный файл:

@echo off
setlocal enableDelayedExpansion
for /f "eol=: delims=" %%F in ('dir /b *_online.png') do (
  set "file=%%F"
  ren "!file!" "!file:~0,-11!.png"
)

В маловероятном случае, если у вас есть имена файлов, которые содержат ! характер, вам понадобится:

@echo off
setlocal disableDelayedExpansion
for /f "eol=: delims=" %%F in ('dir /b *_online.png') do (
  set "file=%%F"
  setlocal enableDelayedExpansion
  ren "!file!" "!file:~0,-11!.png"
  endlocal
)
0

Я не знаю, как использовать пакетный файл. Но у меня есть простой способ удовлетворить ваши требования. Вы можете использовать Total commander и Multi Rename Tool, в сочетании с опцией regex для массового переименования файла, который вы хотите. Я надеюсь, что этот совет может помочь вам

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