【发布时间】:2013-07-06 15:50:10
【问题描述】:
我目前正在尝试根据文件名称的内容重命名一些文件。 我有 4 种不同的可能性:
- 文件名包含“raw.footage”
- 文件名包含“resized.1080”
- 文件名包含“resized.720”
- 文件名包含“converted.avi”
我正在尝试根据它们的名称重命名这些文件。 raw.footage 应该重命名为 raw,resized.1080 到 1080 等等。
如果可能的话,我希望每个可能的名称只有一个 .bat 脚本/文件,而不是四个。
这是我到目前为止所做的:
FOR /R %completepath% %%G IN (*.mp4) DO call :process "%%~nG"
GOTO :EOF
:process
SET %name%=%~1
SET chkname=%name:*raw.footage=?%
IF "%chkname:~0,1%"=="?" (
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=raw.footage
SET new=raw
for /f "tokens=*" %%f in ('dir /b *.mp4') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
) ELSE (
GOTO 1080p
)
:1080p
FOR /R %completepath% %%G IN (*.mp4) DO call :process "%%~nG"
GOTO :EOF
:process
SET %name%=%~1
SET chkname=%name:*resized.1080=?%
IF "%chkname:~0,1%"=="?" (
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=resized.1080
SET new=1080
for /f "tokens=*" %%f in ('dir /b *.mp4') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
) ELSE (
GOTO 720
)
虽然使用仅包含 raw.footage 重命名的第一个块本身可以正常工作,但添加第二个块只会导致命令行在块之间跳转,但文件没有任何反应。
【问题讨论】:
-
嗯,我在这里得到了答案,所以...
-
@Mgetz:不,不是。这是关于批处理文件编程的,在这里完全可以接受。
标签: windows file batch-file