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

[文本处理] [已解决] 批处理怎样批量修改文件名?

本帖最后由 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
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2
莫求昨天无悔,但愿今日无愧。

看到的帮忙看看能不能修改简洁点的
莫求昨天无悔,但愿今日无愧。

TOP

不懂得有什么用,我的文件都没有001、002、003这种名字的。再说,也搞不懂你三个set做什么的。
set /a ge=0
set /a shi=0
set /a bai=0
最后,最好说明你这个代码用来做什么,要怎么用,用什么限制……
1

评分人数

    • CrLf: 乐于助人PB + 3
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

需要这么麻烦吗
  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. )
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

回复 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
莫求昨天无悔,但愿今日无愧。

TOP

回复 5# guaiwu


这段代码主要是想要批量修改指定文件的文件用来重命名排序。
莫求昨天无悔,但愿今日无愧。

TOP

回复 4# 601997526


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

比如文件名前缀全部为 (001 002 003)或着是前缀都为000 这样的文件名,怎么样再去掉啊

TOP

回复 7# zaixinxiangnian

没理解你的意思,前缀是那个。  说得详细点。
莫求昨天无悔,但愿今日无愧。

TOP

回复 8# guaiwu


    一个批量更改文件名的批    运行后全部改为   (0011霜.txt  002.txt   003.txt   文件名前面有相同的字符串)     (或者是001 002 003 004 005 文件名前面有顺序的前缀)

TOP

回复 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%
复制代码

TOP

回复 10# CrLf


诸位都理解错我的意思了,我想要的是保留0的存在,生成001、002、003这样的文件名
仔细看我发的命令的最后结果
莫求昨天无悔,但愿今日无愧。

TOP

回复 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. )
复制代码
1

评分人数

TOP

回复 12# CrLf


谢谢了、  我是个菜鸟 那个段命令也是我搅尽脑经想出来的
现在我知道了还有这么多的用法。   学习了
谢谢
莫求昨天无悔,但愿今日无愧。

TOP

返回列表