我有许多文件需要重命名而没有当前的前缀。不幸的是没有严格的格式
01 - MYFILE.txt
02 - MYFILE - Maybe with extra hypen.mp3
333 - MYFILE.bin
这些应重命名为:
MYFILE.txt
MYFILE - Maybe with extra hypen.mp3
MYFILE.bin
基本上我想要删除类[0-9-]中的任何字符,即任何超级,数字,空格UNTIL一个字符被发现不属于这个类。
我需要使用批处理文件
完成此操作答案 0 :(得分:2)
@ECHO OFF
SETLOCAL
SET sourcedir=u:\test
FOR %%o IN ("%sourcedir%\*") DO (
FOR /f "tokens=*delims=0123456789- " %%a IN ("%%~nxo") DO (
ECHO REN "%%o" "%%a"
IF /i NOT "%%~nxo"=="%%a" ECHO gated REN "%%o" "%%a"
)
)
GOTO :EOF
所需命令仅用于ECHO
以用于测试目的。在您确认命令正确无误后,将ECHO REN
更改为REN
以实际重命名文件。
示例源目录列表:
Directory of u:\test
06/01/2014 08:36 0 01 - myfile.txt
06/01/2014 08:37 0 02 - myfile - maybe with extra hypen.mp3
06/01/2014 08:38 0 333 - myfile.bin
06/01/2014 08:38 0 leave me alone - I am not to change.atall
结果:
REN "u:\test\01 - myfile.txt" "myfile.txt"
REN "u:\test\02 - myfile - maybe with extra hypen.mp3" "myfile - maybe with extra hypen.mp3"
REN "u:\test\333 - myfile.bin" "myfile.bin"
REN "u:\test\leave me alone - I am not to change.atall" "leave me alone - I am not to change.atall"
编辑 - 回显新的gated
重命名行以绕过重命名为同名的尝试。
答案 1 :(得分:0)
使用DOS for / f命令并不难实现。
假设您有一个名为test.txt的文件:
01 - MYFILE.txt
02 - MYFILE - Maybe with extra hypen.mp3
333 - MYFILE.bin
这是一个可能有用的批处理文件。在我的案例中命名为test.bat:
FOR /F "tokens=1,2* delims=0123456789- " %%i in (test.txt) do @echo %%i %%j %%k
set /p DUMMY=Hit ENTER to continue...
以下是cmd窗口中的结果:
C:\Users\Ron Fredericks\Desktop>FOR /F "tokens=1,2* delims=0123456789- " %i in (
test.txt) do @echo %i %j %k
MYFILE.txt
MYFILE Maybe with extra hypen.mp3
MYFILE.bin
C:\Users\Ron Fredericks\Desktop>set /p DUMMY=Hit ENTER to continue...
Hit ENTER to continue...