Dos Batch File Renaming - PullRequest
       10

Dos Batch File Renaming

0 голосов
/ 01 февраля 2011

У меня есть группа файлов, которые названы так (слово может быть любым словом или цифрой):

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файл.Основная проблема заключается в том, чтобы быть надежным.

1 Ответ

1 голос
/ 03 февраля 2011

Если еще не слишком поздно, вы попробуете этот мой маленький пакетный скрипт?Обрабатывает все файлы .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.Это там по замыслу.Я просто хотел бы, чтобы вы сначала убедились, все ли будет гладко.Однако я проверил его, и в этом сценарии нет ничего плохого.

Только одна вещь.Одно из ваших имен образцов содержит двоеточие, что недопустимо в именах файлов.Я заменил его на «#» во время моих тестов.

...