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

[文件操作] 【已解决】求助BAT批量命名文件夹

本帖最后由 001011 于 2013-5-8 17:58 编辑

附件“测试.xls”中的A列是读取  E:\测试\ 路径后的结果   
B列是想要改名的结果
首先读取路径中的文件夹及子文件夹(路径深度如附件“测试.xls”中的A列)
改名的规则按照B列的规则改

抱歉 我没有表达清楚问题
首先 我有一个文件夹E:\测试
E:\测试 下面有N个文件夹 这N个文件夹里面又有N个文件夹,路径格式如A列那样
E:\测试\0100-8222-001
E:\测试\0100-8222-001\00001A
E:\测试\0100-8222-001\00016A
E:\测试\0100-8222-001\00032A
E:\测试\0100-8222-001\00047A
E:\测试\0100-8222-001\00062A
我要改的文件夹名是 最后一级文件夹的名字
改名字的规则是:
E:\测试\0100-8222-001
E:\测试\0100-8222-001\0100-8222-001-001
E:\测试\0100-8222-001\0100-8222-001-002
E:\测试\0100-8222-001\0100-8222-001-003
E:\测试\0100-8222-001\0100-8222-001-004
E:\测试\0100-8222-001\0100-8222-001-005
我想要的是
比如
E:\测试\0100-8222-001\00001A
改成
E:\测试\0100-8222-001\0100-8222-001-001
也就是把00001A改成0100-8222-001-001
规律是获取上一级文件夹的名字 然后加上:“-001”

下一个就是
E:\测试\0100-8222-001\00016A
改成
E:\测试\0100-8222-001\0100-8222-001-002
规律是获取上一级文件夹的名字 然后加上:“-002”
依此类推

谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
非常好的论坛

  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set xls = CreateObject("Excel.Application")
  3. xls.Visible = False
  4. xls.WorkBooks.Open("d:\测试.xls")
  5. xls.WorkSheets(1).Activate
  6. i = 1
  7. Do Until xls.Cells(i,1).Value = ""
  8.    ReDim PreServe ar(i)
  9.    ar(i) = xls.Cells(i,1).Value & "*" & xls.Cells(i,2).Value
  10.    i = i + 1
  11. Loop
  12. xls.quit :Set xls = Nothing
  13. For i = 1 to UBound(ar) - 1
  14.    For j = i + 1 to UBound(ar)
  15.       If Split(ar(i),"*")(0) < Split(ar(j),"*")(0) Then
  16.          Tmp = ar(i) : ar(i) = ar(j) : ar(j) = Tmp
  17.       End If
  18.    Next
  19. Next
  20. For i = 1 to UBound(ar)
  21.    NewName = Split(ar(i),"\")(UBound(Split(ar(i),"\")))
  22.    If fso.FolderExists(Split(ar(i),"*")(0)) Then
  23.       If fso.GetFolder(Split(ar(i),"*")(0)).Name <> NewName Then
  24.          fso.GetFolder(Split(ar(i),"*")(0)).Name = NewName
  25.       End If
  26.    End If
  27. Next
  28. MsgBox "OK"
复制代码

TOP

回复 2# apang
感谢您
我的问题没有表达清楚  是我的错
我上传的测试.xls  只是为了说明问题  不是我本身就有这个表格了
我已经把问题从新描述了  麻烦您再帮忙解答一下  谢谢
非常好的论坛

TOP

  1. @echo off
  2. for /d %%a in (*) do (
  3.   pushd.
  4.   cd /d "%%a"&set "n=1000"
  5.   setlocal enabledelayedexpansion
  6.   for /d %%b in (*) do (
  7.     set /a n+=1
  8.     ren "%%b" "%%a-!n:~1!"
  9.   )
  10.   endlocal
  11.   popd
  12. )
复制代码

TOP

回复 4# xxpinqz
非常感谢  您的代码很好
您这个只能处理一个文件
就是  我会有N个E:\测试这样的文件夹  可以批量吗
非常好的论坛

TOP

回复 [url=]5#[/url] 001011
未说明测试文件夹分布情况,使用拖放方式
  1. @echo off
  2. rem 操作方式:拖动需要重命名的文件夹至批处理图标上,可多个
  3. :loop
  4. if "%~1"=="" goto :eof
  5. cd /d "%~1"||(echo 非法目录名称或不存在此目录&pause&goto :eof)
  6. for /d %%a in (*) do (
  7.   pushd.
  8.   cd /d "%%a"&set "n=1000"
  9.   setlocal enabledelayedexpansion
  10.   for /d %%b in (*) do (
  11.     set /a n+=1
  12.     ren "%%b" "%%a-!n:~1!"
  13.   )
  14.   endlocal
  15.   popd
  16. )
  17. shift /1
  18. goto loop
复制代码
1

评分人数

TOP

非常感谢  非常好用  谢谢啊
非常好的论坛

TOP

返回列表