Board logo

标题: [文件操作] [已解决]批处理根据文件夹名分文件夹 并命名 [打印本页]

作者: 001011    时间: 2015-5-1 21:57     标题: [已解决]批处理根据文件夹名分文件夹 并命名

路径下有很多这样的文件夹  里面都是JPG的图片文件
DYJW-2008-0001-001
DYJW-2008-0001-002
DYJW-2008-0002-001
DYJW-2008-0002-002
DYJW-2008-0002-003
DDAA-2009-0001-001
DDAA-2009-0001-002
根据文件夹名字分文件夹
如图:

这里  DYJW-2008-0001-001 最后面的001变成1,再在这个下面加一个1
比如这个DYJW-2008-0001-002 最后面的002变成2,再在这个下面加一个1
如图:
DDAA-2009-0001-001
DDAA-2009-0001-002
这两个就变成:

最终变成这样的文件夹结构
作者: czjt1234    时间: 2015-5-1 22:12

  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. for /f "tokens=1,2,3,4 delims=-" %%a in ('dir /a:d/b') do (
  4.     set /a n=0+%%d
  5.     md %%a\%%b\%%c\!n!\1
  6. )
复制代码

作者: 001011    时间: 2015-5-1 22:16

本帖最后由 001011 于 2015-5-1 22:20 编辑

回复 2# czjt1234
感谢您的回复,文件夹分的是正确的,就是没有把相应的图片放进去,放进图片后把原始文件夹删掉。麻烦您再改进一下  谢谢
作者: pcl_test    时间: 2015-5-2 11:44

本帖最后由 pcl_test 于 2015-5-2 12:54 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1-4 delims=-" %%a in ('dir /ad /b') do (
  3. md "%%a-%%b-%%c-%%d\1"
  4. move "%%a-%%b-%%c-%%d\*.jpg" "%%a-%%b-%%c-%%d\1\" 2>nul
  5. set /a n=0+%%d
  6. ren "%%a-%%b-%%c-%%d" "%%a-%%b-%%c-!n!"
  7. )
  8. pause
复制代码

作者: 001011    时间: 2015-5-2 12:35

回复 4# pcl_test

提示:存在一个重名文件,或是找不到文件
作者: pcl_test    时间: 2015-5-2 12:54

回复 5# 001011

文件夹没有图片,已修改
作者: 001011    时间: 2015-5-2 14:20

根据 pcl_test 的代码  调节成我需要的功能  谢谢pcl_test
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1,2,3,4 delims=-" %%a in ('dir /a:d/b') do (
    set /a n=0+%%d
ren "%%a-%%b-%%c-%%d" "%%a-%%b-%%c-!n!"
)
@echo off & setlocal enabledelayedexpansion
for /f "tokens=1-4 delims=-" %%a in ('dir /ad /b') do (
md "%%a\%%b\%%c\%%d\1"
move "%%a-%%b-%%c-%%d\*.jpg" "%%a\%%b\%%c\%%d\1\" 2>nul
)
pause
作者: 001011    时间: 2015-5-2 14:20

先把最后面的变成一位数
建立文件夹
剪切图片
OK
作者: ww0000    时间: 2015-5-4 14:44

好东西,以后能用!!
作者: CrLf    时间: 2015-5-4 18:12

回复 2# czjt1234


    set /a n=0+%%d 的办法要是碰到 %%d=008 的情况咋办?
作者: 001011    时间: 2015-5-5 10:09

回复 10# CrLf
您好  按照你的提示 我做了一下测试  008  009  010都会出错啊
麻烦您帮忙修正一下把
感谢
作者: CrLf    时间: 2015-5-5 23:24

回复 11# 001011


    set /a n=0+%%d 改成 set /a n=1000%%d %% 1000
    话说 010 好像不会出错的吧...
作者: 001011    时间: 2015-5-7 10:21

回复 12# CrLf

非常感谢  原先的代码  10会出错的   变成1了




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