Если _
после первых x символов всегда есть после, то из командной строки будет работать следующее (пакет не требуется)
for /d %A in (*) do @for /f "delims=_ eol=_" %B in ("%A") do ren "%A" "%B"
Удвойте проценты, если поместить вышеуказанную команду в пакетный скрипт.
Если вы не можете рассчитывать _
после первых x символов, то эта команда должна работать из командной строки, сохраняя первые 8 символов:
for /d %A in (*) do @set "folder=%A"&call ren "%^folder%" "%^folder:~0,8%"
Или вы можете использовать этот пакетный скрипт для сохранения первых 8 символов:
@echo off setlocal disableDelayedExpansion for /d %%A in (*) do ( set "folder=%%A" setlocal enableDelayedExpansion ren "!folder!" "!folder:~0,8!" endlocal )
Или вы можете использовать мою утилиту переименования регулярных выражений JREN.BAT . Это чистый скрипт (гибридный пакет / JScript), который работает на любом компьютере с Windows начиная с XP - сторонний exe-файл не требуется.
Удалить все с первого _
раза
jren "_.*" "" /d
Сохранить первые 8 символов
jren "^(.).*" "$1" /d
Примечание. Если вы пытаетесь переименовать файлы вместо папок, вы можете сделать что-то вроде
ren *.txt ????????.txt
Но, к сожалению, вы не можете использовать подстановочные знаки при переименовании папок. Так что эта техника бесполезна для папок. См. Как команда Windows RENAME интерпретирует подстановочные знаки? для получения дополнительной информации.