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

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

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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

评分人数

TOP

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

评分人数

TOP

回复 2# DAIC


    谢谢你的指点!我试试看!

TOP

回复 3# cobat


    你说的很有道理!

TOP

回复 5# playinthesky
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

返回列表