2017-01-02 15 views
-2

У меня есть куча PDF-файлов с именами, например, так:Пакетное переименование файлов до определенного символа

Malcolm Gaskill - History.pdf 
Manfred B. Steger - Globalization; A Very Short Introduction.pdf 

Я хочу переименовать их, чтобы избавиться от всего, что до первого дефиса, чтобы они в конечном итоге, как:

History.pdf 
Globalization; A Very Short Introduction.pdf 

Как мне это сделать? Благодаря

ответ

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*.pdf" ' 
) DO (
FOR /f "tokens=1*delims=-" %%b IN ("%%a") DO (
    FOR /f "tokens=*" %%d IN ("%%c") DO (
    ECHO(REN "%sourcedir%\%%~a" "%%~d" 
) 
) 
) 
GOTO :EOF 

Вы должны были бы изменить установку sourcedir в соответствии с вашими обстоятельствами.

Необходимые команды REN - это всего лишь ECHO ed для целей тестирования. После того, как вы подтвердили правильность команд, измените ECHO(REN на REN, чтобы фактически переименовать файлы.

Не особенно легкий для новичка, так как имена файлов могут содержать ; который представляет собой сепаратор, как Космический

Во-первых, выполнить dir /b, чтобы получить все необходимые имена файлов, которые применяются к %%a с использованием for /f без разделителей.

Далее, используя tokenise - в %%b и %%c, а затем удалить начальные разделители %%c использованием tokens=* нанесения требуемого файла для %%d.

Затем смешайте и совместите, чтобы создать необходимую команду переименования.

+0

Я установил 'eol' в': 'или' | ', которые являются недопустимыми символами для имен файлов; это позволит именам файлов содержать/начинать с запятой ';' ... – aschipfl