Board logo

标题: [文件操作] 批处理如何把若干个文件夹下的文件重命名? [打印本页]

作者: binsea    时间: 2010-4-16 16:00     标题: 批处理如何把若干个文件夹下的文件重命名?

当前所在的文件夹下有若干个文件夹(文件夹的名字不确定),文件夹里面有1个文件.举例如下:

SKaf\201004xz.dbf
fsdgfger\201004xz.dbf
部门\201004xz.dbf
...........


需要改成:

SKaf\201004sz.dbf
fsdgfger\201004sz.dbf
部门\201004sz.dbf
...........
作者: binsea    时间: 2010-4-16 16:04

SKaf
fsdgfger
部门


这些文件夹每个月都要变,所以不能指定绝对路径。而且月份也会变,比如:下个月是5月,得到的文件是   201005xz.dbf      
需要把它改成     201005sz.dbf
作者: binsea    时间: 2010-4-16 16:06

  1. @echo off
  2. for /f "delims=- tokens=1,2" %%a in ('date/t') do (rename *.dbf %%a%%bsz.dbf)
  3. pause
复制代码
上面我写的这个只能放在dbf文件所在的目录下执行,改一次,不能改多个
作者: vsbat    时间: 2010-4-16 16:36

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /a-d /s /b') do (
  4. set "t=%%~nxi"
  5. set "t=!t:xz.dbf=sz.dbf!"
  6. ren "%%i"  "!t!"
  7. )
  8. echo 已完成重命名
  9. pause
复制代码

作者: hanyeguxing    时间: 2010-4-16 17:29

原帖由 binsea 于 2010-4-16 16:06 发表
@echo off
for /f "delims=- tokens=1,2" %%a in ('date/t') do (rename *.dbf %%a%%bsz.dbf)
pause
上面我写的这个只能放在dbf文件所在的目录下执行,改一次,不能改多个


  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=-:/ " %%a in ("%date%") do for /F "delims=" %%c in ('dir *.dbf /a-d /s /b') do set "c=%%c"&if /i "!c:~-12!"=="%%a%%bxz.dbf" ren "%%c" "%%a%%bsz.dbf"
复制代码
for /f "tokens=1,2 delims=-:/ " %%a in ("%date%") do 获取%%a%%b为当月的年月,例如201004
for /F "delims=" %%c in ('dir *.dbf /a-d /s /b') do 获取当前目录(包括子目录,包括隐藏或系统属性)下所有.dbf的完整路径及文件名,并"set c=%%c"赋值为变量c
if /i "!c:~-12!"=="%%a%%bxz.dbf" ren "%%c" "%%a%%bsz.dbf" 判断文件名最后12个字符是否符合要求,符合则重命名。

[ 本帖最后由 hanyeguxing 于 2010-4-16 17:34 编辑 ]




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