2013-11-08 2 views
0

У меня есть большое количество файлов в папке, формат имени файла: «ID FIRSTNAME LASTNAME.extension». Идентификатор - это 7 цифр или 6 цифр и X, то есть 1234567 или 123456X. Расширение - это pdf, doc или docx. Разделителем между каждой переменной является пробел «». Пример «1234567 Jill Smith.pdf»Переименование пакетного файла Windows с помощью переупорядочения текущего имени

Мне нужно переименовать каждый файл, переупорядочив текущее имя. Вместо «ID FIRSTNAME LASTNAME.extension» это должно быть «LASTNAME_FIRSTNAME_ID.extension». Таким образом, мне нужно поменять LASTNAME с идентификатором и заменить все пробелы символами подчеркивания «_». Расширение должно быть неизменным. Используя приведенный выше пример, «Smith_Jill_1234567.pdf».

Я проделал некоторую быструю очистку (нет средних имен), но я не уверен, как заставить команду rename работать во втором разделителе, а не в первом. Я посмотрел на windows batch file rename, однако это действует только на первый разделитель.

У меня нет доступа к программному обеспечению третьих лиц (ограниченные разрешения), я запускаю Windows 7, и я проверил, что Powershell можно использовать.

Я был бы признателен за любую помощь по этому вопросу, спасибо

ответ

0
@ECHO OFF 
SETLOCAL 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=c:\sourcedir" 
FOR /f "tokens=1-4delims=. " %%a IN (
'dir /b /a-d "%sourcedir%\*" ' 
) DO (
    SET "reqxt=" 
    IF /i "%%d"=="pdf" SET reqxt=Y 
    IF /i "%%d"=="doc" SET reqxt=Y 
    IF /i "%%d"=="docx" SET reqxt=Y 
    IF DEFINED reqxt (
    ECHO REN "%sourcedir%\%%a %%b %%c.%%d" "%%c_%%b_%%a.%%d" 
) 
) 
GOTO :EOF 

должны сообщать необходимые RENAME с после изменения имени каталога источника. Удалите ключевое слово ECHO, чтобы выполнить переименование.

+0

Спасибо, что сработало отлично, очень ценится – Zeathor

0
ls | Rename-Item -NewName {$_.name -replace '^(\w+) (\w+) (\w+)', '$3_$2_$1'} 
+1

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). –

+0

, отредактированный для точного примера. – gregory

Смежные вопросы