Board logo

标题: [文本处理] [已解决] 批处理怎样批量修改文件名? [打印本页]

作者: guaiwu    时间: 2011-8-27 11:04     标题: [已解决] 批处理怎样批量修改文件名?

本帖最后由 guaiwu 于 2011-8-30 15:03 编辑
  1. @echo off
  2. set /a ge=0
  3. set /a shi=0
  4. set /a bai=0
  5. for /f "delims=" %%i in ('dir *.pdf /o:n /b') do (
  6. setlocal enabledelayedexpansion
  7. set /a ge+=1
  8. if not !ge! equ 10 (if !shi! equ 10 (set /a bai+=1,shi=0
  9. ) else (
  10. rename "%%i" !bai!!shi!!ge!.pdf
  11. )
  12. ) else (
  13. set /a shi+=1,ge=0
  14. rename "%%i" !bai!!shi!!ge!.pdf
  15. )
  16. )
复制代码
批量修改文件名  001、002、003
作者: guaiwu    时间: 2011-8-27 11:05

看到的帮忙看看能不能修改简洁点的
作者: cjiabing    时间: 2011-8-27 11:21

不懂得有什么用,我的文件都没有001、002、003这种名字的。再说,也搞不懂你三个set做什么的。
set /a ge=0
set /a shi=0
set /a bai=0
最后,最好说明你这个代码用来做什么,要怎么用,用什么限制……
作者: 601997526    时间: 2011-8-27 12:24

需要这么麻烦吗
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir *.pdf /o:n /b') do (
  3. set /a ge+=1
  4. if !ge! lss 100 (set shi=0!ge!)
  5. if !ge! lss 10 (set shi=0!shi!)
  6. ren "%%i" !shi!.pdf
  7. )
复制代码

作者: guaiwu    时间: 2011-8-27 13:10

回复 3# cjiabing


set /a ge=0
set /a shi=0
set /a bai=0
的作用是为了不让ge、shi、bai不会是空的
是nul的话!bai!!shi!!ge!中  bai、shi就输不出了。
我要达到的目的是ge=1,!bai!!shi!!ge!=001
作者: guaiwu    时间: 2011-8-27 13:14

回复 5# guaiwu


这段代码主要是想要批量修改指定文件的文件用来重命名排序。
作者: zaixinxiangnian    时间: 2011-8-27 13:45

回复 4# 601997526


    我试了之后把名子全改了,怎么样再把前缀给去掉啊  想了好久也没有写成功

比如文件名前缀全部为 (001 002 003)或着是前缀都为000 这样的文件名,怎么样再去掉啊
作者: guaiwu    时间: 2011-8-27 15:22

回复 7# zaixinxiangnian

没理解你的意思,前缀是那个。  说得详细点。
作者: zaixinxiangnian    时间: 2011-8-27 16:57

回复 8# guaiwu


    一个批量更改文件名的批    运行后全部改为   (0011霜.txt  002.txt   003.txt   文件名前面有相同的字符串)     (或者是001 002 003 004 005 文件名前面有顺序的前缀)
作者: CrLf    时间: 2011-8-30 15:13

回复 7# zaixinxiangnian


方法很多,举两个例子:
  1. for /f "tokens=* delims=0" %%a in ("0001230456") do echo %%a
复制代码
  1. set filename=00123
  2. set /a n=1%filename%%%100000
  3. echo %n%
复制代码

作者: guaiwu    时间: 2011-8-30 15:23

回复 10# CrLf


诸位都理解错我的意思了,我想要的是保留0的存在,生成001、002、003这样的文件名
仔细看我发的命令的最后结果
作者: CrLf    时间: 2011-8-30 15:30

回复 11# guaiwu


    那回复的是 7 楼问题,我以为楼主的问题已经解决了...
所有类型的文件都使用同一数列改名:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.*) do (
  3.    set /a n+=1001
  4.    ren "%%a" "!n:~-3!.%%~xa"
  5. )
复制代码
按各自的后缀名依次改名:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.*) do (
  3.    set /a "%%~xa+=1001"
  4.    ren "%%a" "!%%~xa:~-3!%%~xa"
  5. )
复制代码

作者: guaiwu    时间: 2011-8-30 15:42

回复 12# CrLf


谢谢了、  我是个菜鸟 那个段命令也是我搅尽脑经想出来的
现在我知道了还有这么多的用法。   学习了
谢谢




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