Board logo

标题: [文件操作] 将所有“PC端图片”文件夹里的图片按照原来的顺序重命名为“001,002,00N,......” [打印本页]

作者: 453765918    时间: 2023-4-11 09:21     标题: 将所有“PC端图片”文件夹里的图片按照原来的顺序重命名为“001,002,00N,......”

文件夹里有N个子文件夹,子文件夹里有“主图”和“PC端图片”两个文件夹,图片的名称有纯数字序号,也有汉字加数字的序号以及带括号的序号(1)。
要将所有“PC端图片”文件夹里的图片按照原来的顺序重命名为“001,002,00N,......”
作者: 77七    时间: 2023-4-11 12:21

有汉字加数字的序号

请提供一些具有代表性的真实文件名,如果有规律,批处理可以达到你的要求。
作者: 453765918    时间: 2023-4-11 15:48

就纯数字的吧,1,2,3,10,11
作者: qixiaobin0715    时间: 2023-4-11 16:14

你上面的几种情况需要分别处理,所以2楼的意思是你要列举所有的情况。
作者: buyiyang    时间: 2023-4-11 17:21

这个问题同样也困扰了许多人啊,试试这个吧
  1. set "p=C:\1\2"
  2. rem 以上设置目录
  3. powershell -c "$i = 1;$files = dir -LiteralPath '%p%' -File ;Add-Type 'using System;using System.Collections.Generic;using System.Runtime.InteropServices;public static class ExpDir{[DllImport(\"Shlwapi.dll\",CharSet=CharSet.Unicode)]public static extern int StrCmpLogicalW(string p1,string p2);public static string[] Sort(string[] f){Array.Sort(f,StrCmpLogicalW);return f;}}';[ExpDir]::Sort($files)  | %%{ren ('%p%\' + $_) -NewName ('{0:D3}{1}' -f $i, $([IO.Path]::GetExtension($_))); $i ++}"
复制代码

作者: czjt1234    时间: 2023-4-11 21:21

比如原来的图片文件

1.jpg
风景.jpg
风景(1).jpg
山水1.jpg

改为

001.jpg
002.jpg
003.jpg
004.jpg

是不是这个意思?
作者: 453765918    时间: 2023-4-12 11:24

回复 6# czjt1234   是的
作者: 453765918    时间: 2023-4-12 11:27

回复 4# qixiaobin0715 就是纯数字的序号,如:1,2,3,4,,不管其他情况了。
作者: qixiaobin0715    时间: 2023-4-12 12:55

本帖最后由 qixiaobin0715 于 2023-4-12 13:00 编辑

假设文件夹中的图片名称是连续的自然数,图片文件的扩展名为.jpg。将下面代码另存为ANSI编码的bat文件,放在主文件夹中运行,注意备份源文件夹,以免出现意外情况:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     pushd "%%i\PC端图片"
  5.     for /f "delims=" %%j in ('dir /b /a-d *.jpg') do (
  6.         set NewName=00%%~nj
  7.         ren "%%j" "!NewName:~-3!.temp"
  8.     )
  9.     ren "*.temp" "*.jpg"
  10.     popd
  11. )
  12. pause
复制代码

作者: 453765918    时间: 2023-4-13 08:07

回复 9# qixiaobin0715 非常感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2