Если после первых 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 "^(.{8}).*" "$1" /d
Примечание. Если вы пытаетесь переименовать файлы вместо папок, вы можете сделать что-то вроде
ren *.txt ????????.txt
Но, к сожалению, вы не можете использовать подстановочные знаки при переименовании папок. Так что эта техника бесполезна для папок. См. Как команда Windows RENAME интерпретирует подстановочные знаки? для получения дополнительной информации.