找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26147|回复: 5

[文本处理] [已解决]批处理输出的时候是正确的,但是改名出错?(文件替换的问题)附带源码

[复制链接]
发表于 2015-3-13 01:09:27 | 显示全部楼层 |阅读模式
本帖最后由 playinthesky 于 2015-3-14 23:51 编辑
  1. @echo off
  2. for %%i in (*.jpg) do (
  3.         for /f "tokens=1-2 delims=." %%a in ("%%i") do (
  4.                 for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
  5.                    echo %%b-%%c-%%d-%%f-%%e.jpg %%b-%%c-%%d-%%e-%%f.jpg
  6.                 )
  7.         )               
  8. )
  9. pause
复制代码
J090-2011-30年-0001-0035.jpg   J090-2011-30年-0035-0001.jpg
J090-2011-30年-0001-0036.jpg   J090-2011-30年-0036-0001.jpg
J090-2011-30年-0001-0037.jpg   J090-2011-30年-0037-0001.jpg
J090-2011-30年-0001-0038.jpg   J090-2011-30年-0038-0001.jpg
J090-2011-30年-0001-0039.jpg   J090-2011-30年-0039-0001.jpg
J090-2011-30年-0001-0040.jpg   J090-2011-30年-0040-0001.jpg
J090-2011-30年-0001-0041.jpg   J090-2011-30年-0041-0001.jpg
J090-2011-30年-0001-0042.jpg   J090-2011-30年-0042-0001.jpg
J090-2011-30年-0001-0043.jpg   J090-2011-30年-0043-0001.jpg
J090-2011-30年-0001-0044.jpg   J090-2011-30年-0044-0001.jpg
J090-2011-30年-0001-0045.jpg   J090-2011-30年-0045-0001.jpg
J090-2011-30年-0001-0046.jpg   J090-2011-30年-0046-0001.jpg
J090-2011-30年-0001-0047.jpg   J090-2011-30年-0047-0001.jpg
J090-2011-30年-0001-0048.jpg   J090-2011-30年-0048-0001.jpg
J090-2011-30年-0001-0049.jpg   J090-2011-30年-0049-0001.jpg
输出是正常的,但是改名之后
  1. @echo off
  2. for %%i in (*.jpg) do (
  3.         for /f "tokens=1-2 delims=." %%a in ("%%i") do (
  4.                 for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
  5.                    ren %%b-%%c-%%d-%%e-%%f.jpg %%b-%%c-%%d-%%f-%%e.jpg
  6.                 )
  7.         )               
  8. )
复制代码
改名之后的结果是

J090-2011-30年-0001-0035.jpg
J090-2011-30年-0036-0001.jpg
J090-2011-30年-0037-0001.jpg
J090-2011-30年-0038-0001.jpg
J090-2011-30年-0039-0001.jpg
J090-2011-30年-0040-0001.jpg
J090-2011-30年-0041-0001.jpg
J090-2011-30年-0042-0001.jpg
J090-2011-30年-0043-0001.jpg
J090-2011-30年-0044-0001.jpg
J090-2011-30年-0045-0001.jpg
J090-2011-30年-0046-0001.jpg
J090-2011-30年-0047-0001.jpg
J090-2011-30年-0048-0001.jpg
J090-2011-30年-0049-0001.jpg

在几千条下运行,总会出现没改的,谁能告诉我,这是为什么?有大哥可以指点一下吗?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-13 10:38:57 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.jpg') do (
  3.     for /f "tokens=1-2 delims=." %%a in ("%%i") do (
  4.         for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
  5.            ren %%b-%%c-%%d-%%e-%%f.jpg %%b-%%c-%%d-%%f-%%e.jpg
  6.         )
  7.     )
  8. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-3-13 11:14:01 | 显示全部楼层
本帖最后由 cobat 于 2015-3-13 13:50 编辑
  1. for %%i in (*.jpg)
复制代码
我记的这种写法会读取部分改名后的文件
所以你的情况不是没改,是改了两次.
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b *.jpg') do (
  3.     for /f "tokens=1-5 delims=-" %%b in ("%%~na") do (
  4.         ren "%%a" "%%b-%%c-%%d-%%f-%%e.jpg"
  5.     )
  6. )
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-13 20:43:45 | 显示全部楼层
回复 2# DAIC


    谢谢你的指点!我试试看!
 楼主| 发表于 2015-3-13 20:44:11 | 显示全部楼层
回复 3# cobat


    你说的很有道理!
发表于 2015-3-14 14:29:43 | 显示全部楼层
回复 5# playinthesky
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 13:24 , Processed in 0.021853 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表