Почему эта команда REN возвращает «Неверный синтаксис команды»?

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

  1. Happysong.m4a.mp3
  2. Грустная песня ft. HERm4a.mp3

Я хочу переименовать их в:

  1. Счастливая песня.mp3
  2. Грустная песня ft. HERmp3

Вот мой код для test.batфайл, который находится в той же папке:

      for /f "delims=" %%a in ('dir  /b /a-d *.m4a.mp3') do (
  set "oldName=%%~a"
  set "newName=%oldName:.m4a=%"
  ren %%a "%newName%"
)

Он возвращается The syntax of the command is incorrect.
Я пытался:

      for /f "delims=" %%a in ('dir  /b /a-d *.m4a.mp3') do (
  set "oldName=%%~a"
  set "newName=%oldName:.m4a=%"
  ren %%a %newName%
)

который возвращает ft. was unexpected at this time.
Что я здесь делаю неправильно?

1 ответ

Вероятно, вы могли бы сделать это из cmd :

      For %G In (*.m4a.mp3) Do @For %H In ("%~nG") Do @Ren "%G" "%~nH%~xG"

Или вот так из командного файла :

      @For %%G In (*.m4a.mp3) Do @For %%H In ("%%~nG") Do @Ren "%%G" "%%~nH%%~xG"
Другие вопросы по тегам