Board logo

标题: [文件操作] 如何将多个文件夹里的文件以所在文件夹名加递增序号的方式重命名并复制到指定文件夹里 [打印本页]

作者: vurtne132    时间: 2016-7-26 12:42     标题: 如何将多个文件夹里的文件以所在文件夹名加递增序号的方式重命名并复制到指定文件夹里

本帖最后由 pcl_test 于 2016-7-26 13:21 编辑

我有大概200多个子文件夹在同一文件夹下,名字为数字1.2.3.4顺序排列,每个文件夹内有数目不等并且名字无序的图片

我想要把这些图片按照各自所在的文件夹命名。例如,把名称为1的文件夹内的3个图片,改成1_01,1_02,1_03,同理,把名称为2的文件夹内的4个图片,改成2_01,2_02,2_03,2_04

最后把所有命名后的文件提取到另一个文件夹里面并且名称不改动,还是1_01,1_02,2_01,2_02

由于需要改动的图片有几千个,还需要筛选,并且分类为10多组,工程量太大!我不想来年老婆带着新欢来给我烧纸啊!!!!希望各位大神能帮我一下,感激不尽
作者: binghejin    时间: 2016-7-28 21:22

本帖最后由 binghejin 于 2016-7-29 15:12 编辑

所有的文件最终会全部改名后复制到名为OK的目录中,源文件没有删除!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cls
  4. dir /ad /b >list.txt
  5. for /f %%a in (list.txt) do (
  6. dir %%a\*.* /b >list_%%a.txt
  7. )
  8. md ok
  9. for /f %%b in (list.txt) do (
  10. for /f "delims=" %%i in (list_%%b.txt) do (
  11. set /a n+=1
  12.    copy "%%b\%%i" "ok\%%b_!n!"
  13. )
  14. set n=0
  15. )
  16. del list*.txt >nul
复制代码

作者: bailong360    时间: 2016-7-29 09:21

本帖最后由 bailong360 于 2016-7-29 09:33 编辑
  1. (let ((PATH "G:\\test\\"))
  2.   (dolist (dir (directory-files PATH nil "^\[0-9\]+$"))
  3.     (setq n 0)
  4.     (dolist (file (directory-files (concat PATH dir) nil "\[^.\]"))
  5.       (setq n (+ 1 n))
  6.       (let ((oldname (concat PATH dir "\\" file))
  7.             (newname (format "%s%s\\%s_%02d" PATH dir dir n)))
  8.         (rename-file oldname newname)
  9.         (copy-file   newname "G:\\newfolder")))))
复制代码
练手党撸一发
顺便吐槽一下directory-files文件目录都列出来是什么鬼?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::CODE BY bailong360 @bbs.bathome.net
  4. for /f "delims=" %%i in ('dir /ad /b "G:\test"') do (
  5.     set n=0
  6.     for /f "delims=" %%j in ('dir /a-d /b "%%i"') do (
  7.         set /a n+=1
  8.         ren "%%i" "%%i\%%~ni_!n!"
  9.         copy "%%i\%%~ni_!n!" "G:\newfolder\"
  10.     )
  11. )
复制代码





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