zilia
@zilia
Автоматизируй это!

Как массово переименовать хитроназванные файлы в windows?

Windows XP, папка на сетевом диске, в ней куча pdf вида:

YYYY-MM-DD_*_XXXXXX.pdf

и

YYYY-MM-DD_*_XXXXXXX.pdf

где X цифры а за * любой набор символов в том числе пробел и "_" тоже может быть.


Задача поменять цифры X и то что за * местами, получив в итоге файлы вида:

YYYY-MM-DD_XXXXXX_*.pdf


Решение желательно в виде cmd/bat или с применением утилитки не требующей инсталляции.

Короче, всякий unix-way и красота решения крайне приветствуются.
  • Вопрос задан
  • 4086 просмотров
Решения вопроса 1
@korvindest
Вот решение, которое работает при ваших условиях
:: MassRename.cmd
@echo off
cls

goto :Begin

:RenameFile
set fileName=%~1
set forwardPart=%fileName:~0,10%
set middlePart=%fileName:~10,-11%
set lastPart=%fileName:~-11,7%
set extension=%fileName:~-4%
rename "%fileName%" "%forwardPart%%lastPart%%middlePart%%extension%"
goto :EOF

:Main
for /F «tokens=*» %%f in ('dir /B *.pdf') DO (
Call :RenameFile "%%f"
)
goto :EOF

:Begin
Call :Main

Скрипт сделан с учетом того что все файлы имеют расширение pdf и статическое(одинаковой длинны) начало и конец, но при этом разную центральную часть.

Я заметил, что при любом моем ответе по батникам, мне обязательно ставят минус сами знаете куда, поэтому настоятельно прошу негодующих о несовершенстве языка CMD минусовать комментарий, иначе я просто не смогу больше опубликовать статьи по Maven.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Laplace
@Laplace
1) cygwin
2) Total commander -> Multi-Rename tool
Ответ написан
zencd
@zencd
Ну если cygwin не подходит, то:
bash.exe + find.exe + sed.exe + mv.exe
Ответ написан
Laplace
@Laplace
Ещё вариант, чтоб с батниками не мучиться: vbs скрипт.
Ответ написан
@Optik
narod.yandex.ru/disk/25983179001/renamer.jar
java -jar renamer.jar path/to/folder/with/files
На файлах не тестил, но регулярка работала)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы