Dos пакетно преименуване на файлове

Имам група файлове, които са наименувани като такива (думата може да бъде всяка дума или числа):

Word word-word word word Floor B2342 Word Word-word.pdf
Word word-word word Floor: B-2342 Word Word-word.pdf
Word word- Floor C43 Word Word.pdf
Word word word- Floor- E2AD342 Word Word.pdf

Искам да преименувам всичко в папката, за да имам само групата, която следва Floor... Можете да разчитате, че Floor винаги е в името на файла и това, което искам, ще продължи да следва етажа.

B2342.pdf
B-2342.pdf
C43.pdf
E2AD342.pdf

Един ред би бил хубав, но може да бъде повече, тъй като ще бъде в .bat файл. Основната грижа е да бъдеш здрав.


person user597496    schedule 31.01.2011    source източник
comment
опитайте да попитате на superuser.com   -  person BlackBear    schedule 01.02.2011


Отговори (1)


Ако не е твърде късно, ще изпробвате ли този мой малък групов скрипт? Той обработва всички .pdf файлове в текущата директория. Ако името няма част „Етаж“, скриптът просто пропуска файла.

:@ECHO OFF
FOR %%a IN (*.pdf) DO CALL :RenameFile "%%a" %%~na
GOTO :EOF


:RenameFile
SET oldname=%1
SET newname=
SET floored=0

:loop
IF %2.==. GOTO :endloop
IF %floored%==1 SET newname=%2& GOTO :endloop
SET tmp=%2
IF /I %tmp:~0,5%==Floor SET floored=1
SHIFT
GOTO :loop
:endloop

IF NOT %newname%.==. COPY %oldname% %newname%.*

Може да сте забелязали изненадващата команда COPY вместо RENAME. Там е по проект. Просто бих искал първо да се уверите дали всичко ще бъде гладко. Все пак го тествах и изглежда, че няма нищо нередно в този скрипт.

Само едно нещо. Едно от вашите примерни имена съдържа двоеточие, което е незаконно в имената на файловете. Замених го с '#' по време на моите тестове.

person Andriy M    schedule 02.02.2011