在Windows中批量重命名多个文件?
问题描述:
我想知道我的代码有什么问题,因为它不起作用在Windows中批量重命名多个文件?
我想重命名Chris中的所有png文件。
但未能
for /f in ('C:/Users/Chris/Downloads/images/*.png')
do ren "C:\Users\Chris\Downloads\images\*.png" "%date:~10,4%-%date:~4,2%-%date:~7,2%_%HR%%time:~3,2%-img.png"
答
在参数无需/ F,不需要引号,但你缺少一个变量声明
变量应在DO-部分,否则可用于为不是真的有用
的对,所以你需要使用剥离文件名会枚举的完整路径〜n的
该做的部分必须是直接的背后for语句或它必须是圆括号内
这里的完整代码:
for %%i in (C:/Users/Chris/Downloads/images/*.png) do (
ren "%%i" "%date:~10,4%-%date:~4,2%-%date:~7,2%_%HR%%time:~3,2%-%%~niimg.png"
)
答
如果为了使用for
循环,你需要指定一个变量来使用(即使你不这样做根本在循环中使用一个变量),否则你会得到一个语法错误。虽然变量只能是一个字母,但这几乎是批处理中变量区分大小写的唯一时间,所以你有52个字母,加上我见过的一些额外的字符,比如#。此外,do
必须始终与)
位于同一行。
A for /F
loop可以处理字符串,文本文件和其他批处理命令。
- 要处理字符串,用双引号:
for /F %%A in ("hello world") do echo %%A
- 要处理批处理命令,使用单引号:
for /F %%A in ('dir /b') do echo %%A
- 处理文本文件,不要使用在所有的任何报价:
for /F %%A in (C:\Users\Chris\image_list.txt) do echo %%A
您可能还想进入您正在处理的目录,以便简化操作。
pushd C:\Users\Chris\Downloads\images
for /F %%A in ('dir /b *.png') do (
REM I'm not sure what the %HR% variable is supposed to be, so I'm ignoring it.
ren "%%A" "%date:~10,4%-%date:~4,2%-%date:~7,2%_%HR%%time:~3,2%-img.png"
)