在命令提示符中重命名

在命令提示符中重命名

我有一些文件名为的图像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

就目前情况而言,这将只是回显命令moveecho完成测试后,请删除。请记住,如果您的文件名中有空格,这可能无法按预期工作。

一步一步来:

  • setlocal可以启用某些cmd.exe扩展,其中最主要的是能够在for循环内延迟扩展环境变量。
  • 循环for运行 cmd dir /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 上可能需要先执行此操作。

相关内容