Если вы просто хотите удалить символы для списка, вы можете поместить следующее в пакетный файл, заменив соответствующий каталог вместо dirname
for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G
dir /b
создает список каталогов в чистом формате (без информации о заголовках и сводных данных). Значение delims=_
указывает, что в качестве разделителя следует использовать подчеркивание, а tokens=2
указывают, что вы хотите получить то, что следует после подчеркивания. Смотрите FOR /F для более полного объяснения того, как использовать FOR /F
в командном файле.
Но если вы хотите переименовать файлы без цифр и подчеркивания, в вашем примере у вас есть два файла, которые выдали бы имя filename2.txt
если бы цифры и подчеркивание были удалены. Что вы хотите сделать в этом случае? Или вы намеревались использовать filename3.txt для третьего файла?
Если то, что следует за подчеркиванием, является уникальным именем, вы можете использовать следующее для переименования файлов, заменив соответствующий каталог для соответствующего каталога:
set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H
В приведенном выше случае первый токен, %%G
, - это то, что стоит перед подчеркиванием, а второй токен, %%H
- это то, что стоит после подчеркивания. Я собрал их вместе для операции переименования и предшествовал каталогу, поскольку команда переименования использует синтаксис RENAME [drive:][path]filename1 filename2
.
Поместите @echo off
в качестве первой строки в пакетном файле перед командой set
, если вы не хотите видеть каждую операцию переименования в том виде, как она происходит.