标题: [文件操作] 批处理如何重新命名最底层文件夹下的文件? [打印本页]
作者: SandraRusso 时间: 2015-2-14 17:33 标题: 批处理如何重新命名最底层文件夹下的文件?
请教大家!D盘符下有W文件夹,W文件夹下有众多子文件夹,每个子文件夹下包含很多图片文件,如何批量将这些图片重新命名?
作者: pcl_test 时间: 2015-2-14 18:07
回复 1# SandraRusso
命名规则是什么?
作者: SandraRusso 时间: 2015-2-14 18:26
回复 2# pcl_test
比如将数字.jpg格式的转化成数字-数字的格式!例如把某个文件夹下的3张图片 2.jpg→5-1.jpg 3.jpg→5-2.jpg 4.jpg→5-3.jpg,前提每个文件夹下的图片文件名和数量都不太一样,最后想要统一成*—*的格式就好
作者: pcl_test 时间: 2015-2-14 18:47
回复 3# SandraRusso
数字.jpg格式的转化成数字1-数字2.jpg的格式很容易,但是这数字怎么决定呢,这个规则没有说清楚,比如可以先获取某个子文件夹里的数字1-数字2.jpg格式的图片数字1为最大值的是多少,然后把数字.jpg格式的按数字1最大值+1-数字2.jpg的格式命名
作者: SandraRusso 时间: 2015-2-14 19:04
回复 4# pcl_test
每个子文件夹下的图片转化后的格式数字1-数字2,数字1为固定数字比如5,数字2为1、2、3……以此类推,转化前的照片.jpg前面的数字最大值不超过10,有的是也是数字1-数字2的格式,但是想统一所有的数字开头比如5-1、5-2
以此类推!
作者: SandraRusso 时间: 2015-2-14 20:40
回复 4# pcl_test
高手,看到命名规则了没?大致想实现这样的效果,你帮我看看呗!
作者: pcl_test 时间: 2015-2-14 21:51
本帖最后由 pcl_test 于 2015-2-14 22:27 编辑
回复 5# SandraRusso
一、可重命名D:\W里的一级子文件夹里的图片- @echo off
- setlocal enabledelayedexpansion
- set "filesdir=D:\W\"
- for /f "delims=" %%i in ('dir /ad /b "%filesdir%"') do (
- pushd "%filesdir%%%i"
- set n=1
- for /f "delims=" %%a in ('dir /b *jpg 2^>nul ^|findstr /v ".-"') do (
- ren "%%a" "5-!n!.jpg"
- set /a n+=1
- )
- popd
- )
- pause
复制代码
二、可重命名D:\W里的N级子文件夹里的图片- @echo off
- setlocal enabledelayedexpansion
- set "filesdir=D:\W\"
- cd /d "%filesdir%"
- for /f "delims=" %%a in ('dir /a-d /s /b *jpg ^|findstr /v ".-"') do (
- >>"temp.txt" echo,%%~dpa
- )
- for /f "delims=" %%b in ('type "temp.txt"') do (
- if not defined %%b set %%b=Def & >>$ echo,%%b
- )
- move $ "temp.txt"
- for /f "delims=" %%c in ('type "temp.txt"') do (
- set n=1
- pushd "%%c"
- for /f "delims=" %%i in ('dir /b *jpg ^|findstr /v ".-"') do (
- ren "%%i" "5-!n!.jpg"
- set /a n+=1
- )
- popd
- )
- del temp.txt /f /q
- pause
复制代码
作者: SandraRusso 时间: 2015-2-18 12:16
回复 7# pcl_test
试了一下,只能转化命名为*.jpg的图片,并不能命名*-*.jpg格式的图片,因为转化前的照片有的是也是数字1-数字2的格式(*-*.jpg),比如1-1,1-2,3-2……想统一所有的数字开头比如5-1、5-2
以此类推!
作者: pcl_test 时间: 2015-2-18 12:22
回复 8# SandraRusso
把筛选条件^|findstr /v ".-"去掉即可
作者: SandraRusso 时间: 2015-2-18 14:06
回复 9# pcl_test
好的!非常感谢~前几天我给您截图的那个帖子您有空再帮我看看呗!您一直也没回复,实在不知道是什么原因了呢?
作者: SandraRusso 时间: 2015-2-18 15:02
回复 9# pcl_test
又出现了点小问题,如果原来图片中已经存在5-3.jpg的命名,在统一命名的时候后这张图片的名字也会发生变化,如何保留像这样要求的5-*(5可以根据需要随意变动)格式的本身的命名呢,只改动其他不标准的名字!
作者: pcl_test 时间: 2015-2-18 17:31
回复 11# SandraRusso
不要刷题
在命名语句加个判断即可- for /f "delims=" %%a in ('dir /b *jpg 2^>nul') do (
- if exist "5-!n!.jpg" (
- set /a n+=1
- ) else (
- ren "%%a" "5-!n!.jpg"
- set /a n+=1
- )
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |