gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:12:21 25 4
gpt4 key购买 nike

我大约有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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com