Как использовать «ren» или «rename» для усечения имени файла до подчеркивания? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть несколько имен файлов, сохраненных в C:\aaa\temp

До:

92485345_A0027777882244.zip
87493354_A0027684085444.zip
87111901_A0027871905777.zip

некоторое фиксированное правило в имени файла:

  1. Iнужно удалять символы до подчеркивания "_"
  2. Имя после подчеркивания всегда начинается с A0027

Может кто-нибудь подскажет, пожалуйста, как написать скрипт для пакетного переименования ихкак показано ниже:

После:

A0027777882244.zip
A0027684085444.zip
A0027871905777.zip

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Если число символов перед подчеркиванием _ всегда одинаково, используйте это:

rem // Expecting 8 characters in front of `_`:
ren "????????_A0027*.zip" "/////////*.*"

Это недокументированная функция ren, которая описана там .


Когда число символов перед _ может варьироваться, вы должны использовать dir /B, чтобы получить список подходящих файлов, a for /F цикл для захвата и разделения имен файлов, затем ren для окончательного переименования каждого файла:

for /F "tokens=1* delims=_" %E in ('dir /B /A:-D "*_A0027*.zip"') do @ren "%E_%F" "%F"

Чтобы использовать этот код в вам нужно изменить % на %%:

for /F "tokens=1* delims=_" %%E in ('dir /B /A:-D "*_A0027*.zip"') do (
    ren "%%E_%%F" "%%F"
)
0 голосов
/ 24 октября 2019
  • Вывести список файлов из каталога.
  • Перебрать список имен.
  • Удалить символы до знака подчеркивания (включая).
  • Переименовать каждыйфайл с новым именем при итерации по списку.

Теперь, если вы решили сделать это с помощью скрипта или конвейера, это ваше дело.

...