我有一组这样命名的文件(单词可以是任何单词或数字):
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文件中。主要关注的是稳健。
答案 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
。它是设计的。我希望你先确定一切是否顺利。不过,我已经对它进行了测试,这个脚本似乎没有任何问题。
只有一件事。您的一个示例名称包含冒号字符,这在文件名中是非法的。我在测试期间用'#'替换了它。