[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] BAT怎样批量重命名所有子目录下部分名字相同的文件?

本帖最后由 wozhenfanzzz 于 2015-6-10 21:11 编辑

一个路径下面有很多个很多级的子目录,里面都包含 R*(*)*.jpg还有R*(*)*.tif若干个,希望改名的时候整个路径下的所有子目录里的同编码的文件全部一起改了。

比如所有的R(20)*.jpg 和 R(20)*.tif  等等这些文件名都改成 R(20)ABC   改名后后缀名不变。

*和?是通配符,这个路径假设是E:\test

好像是要用echo吧。请问怎么写?

@echo off&setlocal enabledelayedexpansion
set i=1
for %%a in (*.jpg) do (
ren "%%a" R^(20^)!i!.jpg
set /a i=!i!+1
)
set num=2
for %%a in (*.tif) do (
ren "%%a" R^(20^)!num!.tif
set /a num=!num!+1
)
pause

TOP

回复 2# 尘丶


    大侠测试过吗?   假设如果把e:\test路径下的所有子目录的文件  R999(20)文件名 ,R999(20)文件名文件名……这样的都改成R999(20)统一文件名。怎么弄?
我刚刚测试了,好像没有任何反应啊。。。。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "filen=R(20)"
  4. set "newname=%filen%ABC"
  5. for /f "delims=" %%a in ('dir /b /s "%filen%*.jpg" "%filen%*.tif"') do (
  6. ren %%a !newname!%%~xa
  7. )
复制代码
只是不知道如果你同一个文件夹下面有多个R(20)*.jpg时,你怎么处理?不能同名啊

TOP

回复 4# 437153

@echo off
setlocal enabledelayedexpansion
set "filen=R999(20)"
set "newname=%filen%咨询专家"
for /f "delims=" %%a in ('dir /b /s "%filen%*.txt" "%filen%*.tif"') do (
        ren %%a !newname!%%~xa
)
我这么测试怎么没有一点反应呢?请问大侠测试了吗?这样测试对吗?

TOP

本帖最后由 437153 于 2015-6-10 16:12 编辑

回复 5# wozhenfanzzz


    我这里测试是正常的。不知道是不是你路径的问题。在for前面加一句cd/d E:\test 试试
另外我自己用的是txt和tif测试的,所以,你把代码中的后缀改成你的jpg和tif

TOP

本帖最后由 wozhenfanzzz 于 2015-6-10 16:30 编辑

回复 6# 437153


    还是没有任何反应......我测试的子文件夹里都是类似这样胡乱取名的文件: R999(20)3日寄居然i金佛几点刷积分.txt
运行完批处理文件之后一点反应也没有,我是改成txt了的。R999(20)是编码,每个子文件夹里没有编码相同的文件。

@echo off
setlocal enabledelayedexpansion
set "filen=R999(20)"
set "newname=%filen%咨询专家"
cd/d E:\test
for /f "delims=" %%a in ('dir /b /s "%filen%*.txt" "%filen%*.tif"') do (
        ren %%a !newname!%%~xa
)

TOP

我测试是正常的,能把你要修改的文件名的地方截图吗?让我看看有什么文件

TOP

回复 8# 尘丶

TOP

本帖最后由 尘丶 于 2015-6-10 20:11 编辑

回复 9# wozhenfanzzz


    setlocal enabledelayedexpansion
set i=1
for /f "delims=" %%a in ('dir /s /b *.jpg') do (
ren "%%~pnxa" R^(20^)!i!.jpg
set /a i=!i!+1
)
set num=2
for /f "delims=" %%a in ('dir /s /b *.tif') do (
ren "%%~pnxa" R^(20^)!num!.tif
set /a num=!num!+1
)
传不了图片,大概就是这样了,把当前jpg tif文件命名成R(20)1-n这样的名字。
pause

TOP

回复 10# 尘丶

把“R999(20)乱七八糟文件名”    这样的命名成 “R999(20)统一文件名” 不行吗?

TOP

回复 11# wozhenfanzzz


    不会重名么。

TOP

  1. @ren2 -r -f "(R\(.*\)).*(\..*)" "$1ABC.$2"
复制代码
这样?

TOP

本帖最后由 wozhenfanzzz 于 2015-6-10 21:13 编辑

回复 12# 尘丶


    不会重名

TOP

回复 13# bailong360


    这么简单?就这一句?

TOP

返回列表