急急,不知道发在这里是否合适。
有一千多个文件夹,每个文件夹中有若干文件,现要将文件夹的名称批量加入到文件名中。 例如: 001文件夹中有a1.jpg,a2.jpg,a3.jpg 
002文件夹中有a1.jpg,a2.jpg,a3.jpg 
003文件夹中有a1.jpg,a2.jpg,a3.jpg 
…… 要批量修改为: 
001文件夹中 001-a1.jpg,001-a2.jpg,001-a3.jpg 
002文件夹中 002-a1.jpg,002-a2.jpg,002-a3.jpg 
003文件夹中 003-a1.jpg,003-a2.jpg,003-a3.jpg 
…… 
在文件名中增加文件夹的名称。谁有办法?最好提供一个准确的批处理语句。
问题补充:如果全部都在一个文件夹里,可以使用ACDSEE批量命名,但现在有上千个文件夹,不可能针对每个文件夹里的文件进行处理。

解决方案 »

  1.   

       String path = Server.MapPath("uploads/");
            String []d = System.IO.Directory.GetDirectories(path);
            foreach (String folder in d) {
                System.IO.DirectoryInfo d1 = new System.IO.DirectoryInfo(folder);
                foreach(String file in System.IO.Directory.GetFiles(folder)){
                    System.IO.FileInfo f = new System.IO.FileInfo(file);
                    String newName = String.Format("{0}\\{1}-{2}", folder,d1.Name,f.Name);
                    Response.Write(String.Format("请稍等,正在重命名{0}为{1}<hr/>",d1.Name,f.Name));
                    System.IO.File.Move(file, newName);
                }
            }
      

  2.   

    谢谢,不过俺还是搞不定,俺不懂代码,只想弄个.bat的批处理命令。
    您上面这段代码复制到.bat文件中,运行不了。
    呵呵,还是非常感谢您!
    能弄得简单点吗?俺复制到.bat文件中,可以直接运行的哪种?
      

  3.   

    谢谢,不过俺还是搞不定,俺不懂代码,只想弄个.bat的批处理命令。
    您上面这段代码复制到.bat文件中,运行不了。
    呵呵,还是非常感谢您!
    能弄得简单点吗?俺复制到.bat文件中,可以直接运行的哪种?
      

  4.   

    或者您可以将这段程序打包成一个小程序吗?
    这个要求似乎有点无理。
    如果做成一个小程序,可以放到网上共享了。
    俺的邮箱:[email protected]
      

  5.   

    啊,遍历文件夹做个重命名的操作就ok了,哎,楼上大哥爽了,轻轻松松挣到120~gxgx~小弟就不写了,接点分得了~
      

  6.   

    'tempFolder="E:\project\test\uploads"
    tempFolder=InputBox("请输入文件夹的路径","系统提示")Set fs=CreateObject("scripting.fileSystemObject")
    Set folder=fs.GetFolder(tempFolder).subFolders
    fileList=""
    For Each f In folder
    oldFolder=mid(f,InStrRev(f,"\")+1)
    Set m=fs.getFolder(f).files
    For Each myfile In m
     myfile.name=oldFolder & "-" & myfile.name
     fileList=fileList & "文件:"+f+"重命名为:" & myfile.name & Chr(13)
    next
    Next
    MsgBox fileList
    保存为vbs文件就可以了,测试通过。