Dos批处理文件重命名

时间:2011-01-31 21:17:41

标签: dos batch-file

我有一组这样命名的文件(单词可以是任何单词或数字):

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 个答案:

答案 0 :(得分:1)

如果还不算太晚,你会试试我的小批量剧本吗?它处理当前目录中的所有.pdf文件。如果名称没有“Floor”部分,则脚本会跳过该文件。

:@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。它是设计的。我希望你先确定一切是否顺利。不过,我已经对它进行了测试,这个脚本似乎没有任何问题。

只有一件事。您的一个示例名称包含冒号字符,这在文件名中是非法的。我在测试期间用'#'替换了它。