标题: [文件操作] 批量重命名的批处理为何实际效果不对? [打印本页]
作者: frankzjx0319 时间: 2013-6-7 12:12 标题: 批量重命名的批处理为何实际效果不对?
自己写了个批量重命名的批处理 代码如下- @echo off
- ::接收用户输入
- set /p name=请输入修改后的名称:
- set /p id=请输入起始编号:
-
- ::处理阶段
- setlocal enabledelayedexpansion
- for %%i in (*.jpg) do (
- ren "%%i" %name%!id!.jpg"
- set /a id+=1
- )
- echo 处理完毕!
- pause
复制代码
例如输入abc和2, 修改后实际效果可能不是从abc2.jpg开始 而是从abc3.jpg开始 请问这是为什么呢?
此外, 用for /r也是同样的问题, 但如果用for /f %%i ('dir /b *.jpg')就一切正常 请问这是为什么?
麻烦各位了
作者: Python 时间: 2013-6-7 12:17
(*.jpg)是动态获取文件交给for命令逐个处理
('dir /b *.jpg')是一次性获取文件交给for命令逐个处理
前者实际上也从abc2.jpg开始的,只不过后来又被重复处理了。
作者: frankzjx0319 时间: 2013-6-7 12:24
本帖最后由 frankzjx0319 于 2013-6-7 12:39 编辑
非常感谢Python兄的解答~了解了~
作者: xxpinqz 时间: 2013-6-7 17:08
回复 2# Python
请教下:
没什么计算机基础,所以,我是这么理解动态捕获的.
假如第一次命名为abc2.jpg,n=3,然后abc3.jpg,n=4........,那应该是循环直至n溢出才对吧
作者: Python 时间: 2013-6-8 08:47
回复 4# xxpinqz - @echo off
- ::接收用户输入
- set /p name=请输入修改后的名称:
- set /p id=请输入起始编号:
-
- ::处理阶段
- setlocal enabledelayedexpansion
- for %%i in (*.jpg) do (
- ren "%%i" %name%!id!.jpg"
- echo !id!
- pause
- set /a id+=1
- )
- echo 处理完毕!
- pause
复制代码
单步执行,每ren一次就观察一下jgp
作者: Python 时间: 2013-6-8 12:17
回复 6# 学习处理
把5楼第9行改成:- echo ren "%%i" %name%!id!.jpg"
复制代码
然后自己亲自测试一下就知道了
作者: xxpinqz 时间: 2013-6-8 12:27
回复 5# Python
呃,简单的测试我还是懂的。
但是经常有这样的写法,而且也没出过什么错,就以上面例子来说吧,测试也是通过的,很正常。
总不会和系统有关吧,win7
作者: Python 时间: 2013-6-8 15:40
回复 8# xxpinqz
能否详细说说你的测试过程和测试结果?
作者: Python 时间: 2013-6-8 16:35
回复 10# 学习处理 - @echo off
- ren bathome.txt 批处理之家.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |