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

[文件操作] 批处理怎样批量改名及建立文件夹?

本帖最后由 liudetao 于 2014-8-4 12:33 编辑

我的文件夹结构是这样的,一级文件夹为654021;在这个一级文件夹里有众多二级文件夹(例如:001001GB00001、001001GB00002等等);在每一个二级文件夹里存放的是很多JPG格式文件,JPG格式文件命名(例如:a.jpg、a(1).jpg、a(2).jpg.....  b.jpg、b(1).jpg、b(2).jpg.....以此类推,当然每一个二级文件夹所包含的情况不一样,有的二级文件夹中有a开头的、b开头的、c开头的JPG文件;有的只有a开头的、c开头的JPG文件,不一定要连续,但一定是以不同字母开头的JPG文件),不同字母代表不同种类材料(例如:a开头的JPG文件对应的是申请书,b开头的JPG文件对应的是审批表等等);那么最后能过BAT处理得到的结果(例如:一级文件夹654021中的二级文件夹001001GB00001会变成654021001001GB00001;二级文件夹654021001001GB00001中会自动生成以a开头的JPG文件对应的“申请书”文件夹,并将a开头的JPG文件剪切到这个“申请书”文件夹,并将所有a开头的JPG文件命名为:a.jpg变成654021001001GB00001#1.jpg;a(1).jpg变成654021001001GB00001#2.jpg;a(2).jpg变成654021001001GB00001#3.jpg等等,以此类类推)

程序可以根据实际情况,允许增加不同种类材料,不只有a开头、b开头,还有c、d、e......可以灵活设置。

本帖最后由 xxpinqz 于 2014-8-3 10:32 编辑


没人答可能只是因为你原先问题表述的不清?
自己复制几个文件夹测试下。。。。放在你的一级目录(例如:和654021文件夹平级)执行。
  1. @echo off&setlocal enabledelayedexpansion
  2. %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
  3. %1    if "%%a%%b"=="!tmp!" (set /a n+=1)else set n=1&set "tmp=%%a%%b"
  4. %1    move "%%c" "%%~dpc%%b\%%a#!n!.jpg"
  5. %1 )
  6. %1 goto :eof
  7. set "str="a=申请书" "b=审批表" "c=审核表" "d=立项表""
  8. for %%a in (%str%) do set %%a
  9. (for /d %%a in (*) do (
  10.     pushd "%%a"
  11.     for /f "delims=" %%b in ('dir /b/ad') do (
  12.         ren "%%b" "%%a%%b"
  13.         for %%c in ("%%a%%b\*.jpg") do (
  14.             for /f "tokens=1-2 delims=()" %%d in ("%%~nc") do (
  15.                 set ".=00000%%e"
  16.                 md "%%a%%b\!%%d!"
  17.                 echo,#%%a%%b#%%d!.:~-5!#!%%d!#%%~fc
  18.             )
  19.         )
  20.     )
  21.     popd
  22. ))2>nul
复制代码
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

你好,我试了,这个程序很好用,能不能再麻烦你一下,帮我在程序了加上,要处理的一级文件夹的路径,如:d:\652301,这样就不用每次处理数据,就要拷贝程序了!

TOP

回复 3# liudetao


    这不一样吗,定义路径,每一次运行不也要改。
  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "d:\6054321"
  3. %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
  4. ......
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

谢谢了,朋友!!

TOP

改了,执行后,没有作用!!

TOP

回复 6# liudetao
  1. @echo off&setlocal enabledelayedexpansion
  2. %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
  3. %1    if "%%a%%b"=="!tmp!" (set /a n+=1)else set n=1&set "tmp=%%a%%b"
  4. %1    move "%%c" "%%~dpc%%b\%%a#!n!.jpg"
  5. %1 )
  6. %1 goto :eof
  7. set "str="a=申请书" "b=审批表" "c=审核表" "d=立项表""
  8. for %%a in (%str%) do set %%a
  9. set "dst="d:\654021""
  10. cd /d %dst%
  11. for %%a in (%dst%) do set "cd_=%%~nxa"
  12. (for /f "delims=" %%b in ('dir /b/ad') do (
  13.     ren "%%b" "%cd_%%%b"
  14.     for %%c in ("%cd_%%%b\*.jpg") do (
  15.         for /f "tokens=1-2 delims=()" %%d in ("%%~nc") do (
  16.             set ".=00000%%e"
  17.             md "%cd_%%%b\!%%d!"
  18.             echo,#%cd_%%%b#%%d!.:~-5!#!%%d!#%%~fc
  19.         )
  20.     )
  21. ))2>nul
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 2# xxpinqz


    想知道 这个表情里的 : 代表什么...莫非是腋毛?

TOP

回复 8# CrLf


    仁兄真是让人敬仰,几年没出上论谈,刚一上还是看到你的最后回复。呵呵
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 9# wc726842270


    最近常冒泡,呵呵

TOP

返回列表