标题: [文件操作] 批处理怎样批量改名及建立文件夹? [打印本页]
作者: liudetao 时间: 2014-7-30 10:36 标题: 批处理怎样批量改名及建立文件夹?
本帖最后由 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:29
本帖最后由 xxpinqz 于 2014-8-3 10:32 编辑
没人答可能只是因为你原先问题表述的不清?
自己复制几个文件夹测试下。。。。放在你的一级目录(例如:和654021文件夹平级)执行。- @echo off&setlocal enabledelayedexpansion
- %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
- %1 if "%%a%%b"=="!tmp!" (set /a n+=1)else set n=1&set "tmp=%%a%%b"
- %1 move "%%c" "%%~dpc%%b\%%a#!n!.jpg"
- %1 )
- %1 goto :eof
-
- set "str="a=申请书" "b=审批表" "c=审核表" "d=立项表""
- for %%a in (%str%) do set %%a
-
- (for /d %%a in (*) do (
- pushd "%%a"
- for /f "delims=" %%b in ('dir /b/ad') do (
- ren "%%b" "%%a%%b"
- for %%c in ("%%a%%b\*.jpg") do (
- for /f "tokens=1-2 delims=()" %%d in ("%%~nc") do (
- set ".=00000%%e"
- md "%%a%%b\!%%d!"
- echo,#%%a%%b#%%d!.:~-5!#!%%d!#%%~fc
- )
- )
- )
- popd
- ))2>nul
复制代码
作者: liudetao 时间: 2014-8-4 12:30
你好,我试了,这个程序很好用,能不能再麻烦你一下,帮我在程序了加上,要处理的一级文件夹的路径,如:d:\652301,这样就不用每次处理数据,就要拷贝程序了!
作者: xxpinqz 时间: 2014-8-5 11:49
回复 3# liudetao
这不一样吗,定义路径,每一次运行不也要改。- @echo off&setlocal enabledelayedexpansion
- cd /d "d:\6054321"
- %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
- ......
复制代码
作者: liudetao 时间: 2014-8-5 22:47
谢谢了,朋友!!
作者: liudetao 时间: 2014-8-5 23:08
改了,执行后,没有作用!!
作者: xxpinqz 时间: 2014-8-6 15:50
回复 6# liudetao - @echo off&setlocal enabledelayedexpansion
- %1 for /f "tokens=1,3* delims=#" %%a in ('%0 : ^|sort') do (
- %1 if "%%a%%b"=="!tmp!" (set /a n+=1)else set n=1&set "tmp=%%a%%b"
- %1 move "%%c" "%%~dpc%%b\%%a#!n!.jpg"
- %1 )
- %1 goto :eof
-
- set "str="a=申请书" "b=审批表" "c=审核表" "d=立项表""
- for %%a in (%str%) do set %%a
-
- set "dst="d:\654021""
-
- cd /d %dst%
- for %%a in (%dst%) do set "cd_=%%~nxa"
-
- (for /f "delims=" %%b in ('dir /b/ad') do (
- ren "%%b" "%cd_%%%b"
- for %%c in ("%cd_%%%b\*.jpg") do (
- for /f "tokens=1-2 delims=()" %%d in ("%%~nc") do (
- set ".=00000%%e"
- md "%cd_%%%b\!%%d!"
- echo,#%cd_%%%b#%%d!.:~-5!#!%%d!#%%~fc
- )
- )
- ))2>nul
复制代码
作者: CrLf 时间: 2014-8-6 17:20
回复 2# xxpinqz
想知道 这个表情里的 : 代表什么...莫非是腋毛?
作者: wc726842270 时间: 2014-8-6 18:41
回复 8# CrLf
仁兄真是让人敬仰,几年没出上论谈,刚一上还是看到你的最后回复。呵呵
作者: CrLf 时间: 2014-8-6 20:25
回复 9# wc726842270
最近常冒泡,呵呵
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |