标题: [文本处理] [已解决]批处理输出的时候是正确的,但是改名出错?(文件替换的问题)附带源码 [打印本页]
作者: playinthesky 时间: 2015-3-13 01:09 标题: [已解决]批处理输出的时候是正确的,但是改名出错?(文件替换的问题)附带源码
本帖最后由 playinthesky 于 2015-3-14 23:51 编辑
- @echo off
- for %%i in (*.jpg) do (
- for /f "tokens=1-2 delims=." %%a in ("%%i") do (
- for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
- echo %%b-%%c-%%d-%%f-%%e.jpg %%b-%%c-%%d-%%e-%%f.jpg
- )
- )
- )
- 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
输出是正常的,但是改名之后- @echo off
- for %%i in (*.jpg) do (
- for /f "tokens=1-2 delims=." %%a in ("%%i") do (
- for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
- ren %%b-%%c-%%d-%%e-%%f.jpg %%b-%%c-%%d-%%f-%%e.jpg
- )
- )
- )
复制代码
改名之后的结果是
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
在几千条下运行,总会出现没改的,谁能告诉我,这是为什么?有大哥可以指点一下吗?
作者: DAIC 时间: 2015-3-13 10:38
- @echo off
- for /f "delims=" %%i in ('dir /b *.jpg') do (
- for /f "tokens=1-2 delims=." %%a in ("%%i") do (
- for /f "tokens=1-5 delims=-" %%b in ("%%a") do (
- ren %%b-%%c-%%d-%%e-%%f.jpg %%b-%%c-%%d-%%f-%%e.jpg
- )
- )
- )
复制代码
作者: cobat 时间: 2015-3-13 11:14
本帖最后由 cobat 于 2015-3-13 13:50 编辑
复制代码
我记的这种写法会读取部分改名后的文件
所以你的情况不是没改,是改了两次.- @echo off
- for /f "delims=" %%a in ('dir /b *.jpg') do (
- for /f "tokens=1-5 delims=-" %%b in ("%%~na") do (
- ren "%%a" "%%b-%%c-%%d-%%f-%%e.jpg"
- )
- )
- pause
复制代码
作者: playinthesky 时间: 2015-3-13 20:43
回复 2# DAIC
谢谢你的指点!我试试看!
作者: playinthesky 时间: 2015-3-13 20:44
回复 3# cobat
你说的很有道理!
作者: pcl_test 时间: 2015-3-14 14:29
回复 5# playinthesky
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |