file - 使用批处理脚本重命名目录中的多个文件

标签 file batch-file rename

我大约有1000张图像,它们的名称类似“IMG-12223”。我想将它们重命名为1 2 3 4 ...1000。我该怎么做。我写了一个批处理脚本,其中列出了文件,但是我不知道如何重命名每个文件。例如将名称为“IMG-12223”的第一张图像重命名为1,名称为“IMG-23441”的第二张图像重命名为2,依此类推...

for /r %%i in (*) do (
    echo %c% 
)

最佳答案

这是脚本。只需将脚本放入您的文件夹中并运行它即可。

@echo off & setlocal EnableDelayedExpansion 

set a=1
for /f "delims=" %%i in ('dir /b *') do (
  if not "%%~nxi"=="%~nx0" (
    ren "%%i" "!a!" 
    set /a a+=1
 ) 
) 

如果要保留扩展名,即将“IMG-12223.jpg”,“IMG-12224.jpg”等重命名为“1.jpg”,“2.jpg”等,则可以使用以下脚本。
@echo off & setlocal EnableDelayedExpansion 

set a=1
for /f "delims=" %%i in ('dir /b *.jpg') do (
  ren "%%i" "!a!.jpg" 
  set /a a+=1
) 

[更新]这是 jack 评论中提到的内容的解释。
  • setlocal EnableDelayedExpansion

  • 通常,我们希望变量a在执行时被延迟扩展,但不读取行。没有它,变量a无法获得其增加的值,但始终为1。

    有关EnableDelayedExpansion的详细信息,请引用答案https://stackoverflow.com/a/18464353/2749114
  • for /f "delims=" %%i in ('dir /b *.jpg')

  • 在这里,带有dir选项的/b仅列出所有jpg文件的文件名。
    for循环遍历并重命名所有jpg文件。

    对于delims选项,由于默认的定界符是空格,因此如果没有选项delims=,则文件名中带有空格的图像文件将失败。 IE。对于名为“带有spaces.jpg的img”的图像文件,如果没有该选项,则%%i的值为“img”,而不是整个名称为“带有spaces.jpg的img”,这是不正确的。

    有关for循环,请参阅页面http://ss64.com/nt/for_f.html
  • if not "%%~ni"=="%~n0"

  • 为了更准确,我将其更改为if not "%%~nxi"=="%~nx0"。并且附件代码已更新。

    实际上,它用于避免重命名bat文件本身。如果我们仅将重命名限制在“jpg”文件上,则不需要该行。
    %%~nxi是所遍历的每个文件的扩展名。 %~nx0是正在运行的扩展名为bat的文件。有关详细信息,请参阅页面DOS BAT file equivalent to Unix basename command?

    关于file - 使用批处理脚本重命名目录中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583161/

    相关文章:

    batch-file - For循环批处理中的多个条件?

    windows - 如何使用 COPY 命令附加到文件

    batch-file - FFmpeg 批处理脚本

    c# - 如何重命名 Windows 窗体应用程序中发布文件夹中的 EXE 文件和配置?

    python - PermissionError : [WinError 5] Access denied

    c - C 中的文件描述符

    msbuild - 无法让 MSBuild 社区任务 RegexReplace 工作

    Linux:如何将目录中的所有文件重命名为大写?

    file - 如何使用 Selenium 和 C# 在 IE 浏览器中处理文件下载对话框/弹出窗口

    java - 从java后端服务以 Angular 下载文件