Переименование Файлов и Папок, рекурсивно удаляя все после подчеркивания

Я пытался построить сценарий, чтобы переименовать файлы автоматически и подведенный поэтому, если кто-либо может помочь...

в той же самой папке у меня есть имена файлов как:

exemple_012345-0abc1def.txt
exemple_012345-0abc1def.config.txt

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

exemple.txt
exemple.config.txt

Спасибо

0
nl ja de
Пожалуйста, опубликуйте свой сценарий и определите тип сценария.
добавлено автор Richard Schneider, источник
Пожалуйста, скажите нам, какой сценарий вы пишете? (сценарий оболочки / сценарий питона / пакетный файл, и т.д.).
добавлено автор Manjula Weerasinge, источник
Я попробовал пакетным файлом, который я нашел здесь: @echo от setLocal EnableDELAYedeXpansion УСТАНАВЛИВАЮТ Папку = "C:\test" для/f "символы =* delims = "%% в (' директор/s/a-d / на/b" %Folder %" ^ | находит "_" ') делают (установите N = %% ~Na требование: sub1 ren %% a! N! %% ~Xa) goto: eof: sub1 для/L %% я в (1 1 22) делаю (установите S =! N: ~ %% i^,1! если! S! equ _ (устанавливает N =! N: ~ 0, %% я! goto: сделанный)): сделанный goto:eof, но это стирает все после подчеркивания до расширения (в моем exemple: exemple_012345.config.txt я хотел бы держать .config.txt),
добавлено автор user2020121, источник
И я попробовал powershell также: $f.name-NewName ($f.name.substring (0, $f.name.indexof (' _ ')) + $f.name.substring‌ ​ ($f.name.indexof ('.' ‌ ​))), но это просто не работает
добавлено автор user2020121, источник

1 ответы

Это может быть легко сделано у питона. Я не уверен, будет ли это работать отлично с питоном в окнах.

import os
for root, dirs, files in os.walk('.'):
    for fname in files:
        x = fname.index('_')
        y = fname.index('.')
        substr = fname[:x] + fname[y:]
        os.rename(fname, substr)
0
добавлено
Я проверил его на питоне с окнами также и тем, что это хорошо работало.
добавлено автор NixMan, источник