我有一些文件名为的图像0034343.jpg
,我想删除前导零,保留34343.jpg
新文件名。
我如何在命令提示符下执行此操作?我试过了REN 00*.jpg *.jpg
,但没有用。
答案1
您应该可以从以下方面开始:
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=*" %%a IN ('dir /b 00*.jpg') do (
set file=%%a
set newfile=!file:~2!
echo move !file! !newfile!
)
endlocal
就目前情况而言,这将只是回显命令move
。echo
完成测试后,请删除。请记住,如果您的文件名中有空格,这可能无法按预期工作。
一步一步来:
- 这
setlocal
可以启用某些cmd.exe
扩展,其中最主要的是能够在for
循环内延迟扩展环境变量。 - 循环
for
运行 cmddir /b 00*.jpg
,对每个文件执行一次迭代(设置%%a
为文件名)。 - 第一个
set
只是将文件名保存到变量中。第二个是从第三个字符开始的子字符串操作。 - 这
move
将重命名该文件。
help
您可以通过在命令行输入命令来检查各种命令:
setlocal /?
set /?
for /?
set /?
答案2
尝试这个:
for %i in (*.jpg) do (
set filename=%~nxi
set newname=%filename:~2%
ren !filename! !newname!
)
这只会删除每个文件名开头的两个字符。必须启用延迟扩展。cmd.exe /v:on
在 XP 上可能需要先执行此操作。