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

[文件操作] 修改批处理BAT代码:给子目录文件夹重命名

大家好,又来学习了,请教帮忙修改代码:
我要给当前目录里的文件夹及其子目录(文件夹)重命名,而不影响里面的文件。但是下面的两个代码只能给当前批处理所在的文件夹命名了,而对下层子目录(文件夹)无效,请帮忙给看看。
第一种:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims="  %%i in ('dir /ad/b') do (
  4. set /a num+=1      
  5. ren "%%i" "!num!%%i"               
  6. )
  7. echo 处理完毕!按任意键结束。
  8. pause>NUL
复制代码
问题是:代码中 dir /ad/b又不能加参数 /s ,提示说是语法错误??
第二种:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r  %%i in (.) do (
  4. ren "%%i" "!num!%%~ni"
  5. set /a num+=1
  6. ) 2>NUL
  7. echo 处理完毕!按任意键结束。
  8. pause>NUL
复制代码

本帖最后由 lzyecho 于 2014-2-25 20:02 编辑

回复 3# apang


   首先, 感谢apang的指点,诚恳接受批评。 你给看看,我下面的修改是否可以?  我在dir /ad/b/s 加了参数/s 之后,再在后面命名中把  ren "%%i" "!num!%%i" 改为 ren "%%i" "!num!%%~ni" ,利用变量扩展屏蔽了路径,这样执行的结果是 没有再出现语法错误的提示,可以执行了,重命名也成功了,但是又有了新的提示:系统找不到文件!不知是何原因,是不是我的变量扩展没写对%%~ni   ,这里的n我想指的文件名,但是又在变量扩展中找不相应的字母,因此我用文件名的扩展,不知是否正确,执行的结果虽然是重命名了,但出现了我上面所说的错误提示,请明示原因。另外,虽然加了参数/S,但是仍然没有对子目录中的文件夹重命名,再请您分析原因,谢谢。
第二,我的目的是想对多级子目录中的文件夹重命名,请大家在我上面的代码上给指点迷津或指出更好的方法。再谢大家。

TOP

回复 5# apang


    感谢回复 !!,我试了您的代码,发现是把当前目录的文件夹与子目录里的文件夹混合起来按数字序列命名的。这不是理想结果,我想要的是每一级目录中的文件夹都是按数字序列从1开始命名。不知能不能做到?

TOP

回复 8# apang


    您好,这个代码还是由最内层到最外按数字序列命名的。我的意思是要每一级的目录里的多个文件夹都 是按1、2、3、、、命名的,不同目录里的文件夹没有联系的。再次感谢您。
另外 ,编写代码时 何时要用到变量增加扩展的格式,有没有相应的文章或教程,烦请您介绍一下。

TOP

回复 10# apang


    因为本人对批处理还在初级阶段,只是在表面上编一些简单的代码,希望apang 不要介意,依然感谢你的热心帮助。

TOP

回复 12# DAIC


    感谢DAIC给的学习教程及修改后的代码,很实用!!本论坛是我们这些新手学习的好地方,我会经常来报道的。

TOP

回复 16# terse


      terse ,您好 ,你的代码完美解决了我的问题,第二个代码更简洁!只是对我来说太深了,看不大懂,特别是 这一句  %1(for /f "tokens=*" %%i in ('%~s0 :^|sort /r') do ren %%i)  ,用了参数%1。若有时间麻烦给我逐行解释一下你的设计思路及代码含义,先谢了。

TOP

返回列表