Board logo

标题: 如何更改如下文件目录和文件名为想要的!! [打印本页]

作者: lotus516     时间: 2006-11-18 02:38    标题: 如何更改如下文件目录和文件名为想要的!!

想把如下的源文件结构改为新的文件结构:
└─old
    │  
    │  
    ├─1
    │      001
    │      002
     |      ......
    │      011
    │      012
    │      
    ├─2
    │      001
    │      002
     |      ......
    │      012
    │      013
    │      
    └─3
    │      001
    │      002
     |      ......
    │      010
    │      011
    └─4
    │      001
    │      002
     |      ......
    │      011
    │      012
    └─5
    │      001
    │      002
     |      ......
    │      012
    │      013
.........
    └─99
    │      001
    │      002
     |      ......
    │      011
    │      012



└─new
    │  
    │  
    ├─1
    │      001
    │      002
     |      ......
    │      098
    │      099
     |      .......
总之是把旧的文件夹中的文件按旧的目录树的结构用递增的文件名改名并放入新的文件夹中!!!

[ Last edited by lotus516 on 2006-11-18 at 03:18 AM ]
作者: vkill     时间: 2006-11-18 02:41
sort /?

这个命令我不熟悉,你看看帮助看可以不?
作者: ccwan     时间: 2006-11-18 03:03
dir /b/on >显示.txt
能满足你的要求吗?
作者: lotus516     时间: 2006-11-18 03:07
不能,我要的是把旧的文件夹中的文件按旧的目录树的结构用递增的文件名改名并放入新的文件夹中!!!
作者: ccwan     时间: 2006-11-18 03:10
偶和vkill都以为你显示排序呢!
提问时请将问题说详细。
作者: lotus516     时间: 2006-11-18 03:14
晕,是我表达不清???不会吧!!!
作者: NaturalJ0     时间: 2006-11-18 04:30
试试看这段,不知道合不合你要求。
放在 OLD 文件夹的上一层使用。
@echo off
setlocal enabledelayedexpansion
if not exist new md new
set num=1
for /r old %%i in (.) do (dir/s/a-d/b/on "%%i">>list.lst 2>nul)
for /f "delims=" %%i in (list.lst) do (
        set name=00!num!
        set name=!name:~-3!
        copy "%%i" new\!name!.* >nul 2>nul
        set/a num+=1
)
if exist list.lst del list.lst
因为我看你只用了三位,所以只能处理到999个文件。
如果你文件更多,自己修改下。
作者: namejm     时间: 2006-11-18 05:21
  NaturalJ0 兄的代码挺不错的,只是要生成临时文件,有点不爽。我来一段代码,这个代码要放在old文件夹下,如果有特殊要求,请修改copy里的参数:
@echo off
if not exist ..\new md ..\new
setlocal enabledelayedexpansion
for /l %%i in (1,1,99) do (
    for /f "delims=" %%j in ('dir /a-d /b /s %%i') do (
        set /a num+=1
        set name=00!num!
        copy "%%j"  ..\new\!name:~-3!%%~xj>nul
    )
)
start ..\new
[ Last edited by namejm on 2006-11-17 at 08:08 PM ]
作者: lotus516     时间: 2006-11-18 08:45
哎,看不懂for /r old %%i in (.) do (dir/s/a-d/b/on "%%i">>list.lst 2>nul)这一句,还有一个问题,就是生成的临时文件为什么会重复信息呢?贴上临时文件!!
附件 1: list.txt (2006-11-18 08:45, 14.85 K, 下载附件所需积分 1点 ,下载次数: 6)

作者: namejm     时间: 2006-11-18 09:08
  我晕,还以为你那些001、002之类的是文件夹名呢,原来是文件名啊。我在8F的代码已修改,请测试。