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

[文本处理] [已解决]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,后面就找不到了
回显模式下发现自增没有成功,求指教,谢谢!
1

评分人数

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

你的代码问题是由于变量延迟导致的,可以在论坛上搜索一下关于变量延迟的帖子
  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
1

评分人数

TOP

回复 2# dizimotong


    好的,非常感谢!!

TOP

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

TOP

返回列表