Пакетный файл Windows, как переименовать и удалить часть имени файла - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь переименовать группу файлов в каталоге, которые все имеют часть в имени файла, который я хочу удалить позже.Примеры имен:

  1. 123876. 111 thepartIwanttoremove.exe
  2. thisisatestfile. 111 thepartIwanttoremove.exe
  3. это? 392!. 111 thepartIwanttoremove.exe

  4. thankyouall. 222 thepartIwanttoremove.exe

  5. test. 222 thepartIwanttoremove.exe
  6. whatis@d354.222thepartIwanttoremove.exe

Мой код:

forfiles /S /M *.111thepartIwanttoremove.exe /C "cmd /c rename @file @fname.doc"
ren ???.111thepartIwanttoremove.* ???.doc
ren ????.111thepartIwanttoremove.* ????.doc
ren ?????.111thepartIwanttoremove.* ?????.doc (and so on)

forfiles /S /M *.222thepartIwanttoremove.exe /C "cmd /c rename @file @fname.jpg"
ren ???.222thepartIwanttoremove.* ???.jpg
ren ????.222thepartIwanttoremove.* ????.jpg
ren ?????.222thepartIwanttoremove.* ?????.jpg (and so on)

Итак, для примера я хочу, чтобы файл:

123876.111thepartIwanttoremove.exe

Выглядел так:

123876.doc

, какую функцию я могу использовать для удаления. * ThepartIwanttoremove.exe часть имени потом без написания такого количества строк с "?"?

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 июня 2018

Предполагая, что все файлы состоят из трех частей в имени файла, разделенных точками, этот стиль кода должен работать для вас.

for /F "tokens=1-3 delims=." %%G in ('dir /a-d /b *.111*.exe') do rename "%%G.%%H.%%I" "%%G.doc"
for /F "tokens=1-3 delims=." %%G in ('dir /a-d /b *.222*.exe') do rename "%%G.%%H.%%I" "%%G.jpg"
...