Board logo

标题: [文本处理] [已解决]for循环内定义的变量的值为什么无法自增一(增1)/自加一(加1) [打印本页]

作者: zds612    时间: 2017-5-2 18:17     标题: [已解决]for循环内定义的变量的值为什么无法自增一(增1)/自加一(加1)

本帖最后由 pcl_test 于 2017-5-2 23:24 编辑

循环自动重命名文件的批处理代码为什么不会自增1?
  1. @echo off
  2. set nm=1
  3. (for /f %%i in (a.txt) do (
  4. ren %nm%.pdf %%i.pdf
  5. set /a nm=%nm%+1))
  6. pause
复制代码
本人小白一个哈,代码都是网上找来自己改的

上述代码需要实现的是:

同目录下有
1.pdf
2.pdf
3.pdf
a.txt
其中a.txt里面的内容是:
aaa
bbb
ccc

我想通过批处理的变量自增,来实现
ren 1.pdf aaa.pdf
ren 2.pdf bbb.pdf
ren 3.pdf ccc.pdf

但是我写的看来看去,第一个文件可以被修改为aaa.pdf,后面就找不到了
回显模式下发现自增没有成功,求指教,谢谢!
作者: dizimotong    时间: 2017-5-2 18:42

你的代码问题是由于变量延迟导致的,可以在论坛上搜索一下关于变量延迟的帖子
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set nm=1
  4. (for /f %%i in (a.txt) do (
  5. ren !nm!.pdf %%i.pdf
  6. set /a nm=!nm!+1))
  7. pause
复制代码
回复 1# zds612
作者: zds612    时间: 2017-5-2 21:51

回复 2# dizimotong


    好的,非常感谢!!
作者: 老刘1号    时间: 2017-5-2 22:34

@(for /f %%i in (a.txt) do set /a nm+=1&&Call ren %%nm%%.pdf %%i.pdf)
@pause




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2