中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-08 07:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何更改如下文件目录和文件名为想要的!! 查看 1,107 回复 9
楼 主 如何更改如下文件目录和文件名为想要的!! 发表于 2006-11-18 02:38 ·  中国 江西 赣州 电信
高级用户
★★
论坛上抢劫的
积分 551
发帖 246
注册 2006-09-21 12:35
19年会员
UID 63270
状态 离线
想把如下的源文件结构改为新的文件结构:
└─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 ]
2 发表于 2006-11-18 02:41 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
sort /?

这个命令我不熟悉,你看看帮助看可以不?
3 发表于 2006-11-18 03:03 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
dir /b/on >显示.txt
能满足你的要求吗?
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
4 发表于 2006-11-18 03:07 ·  中国 江西 赣州 电信
高级用户
★★
论坛上抢劫的
积分 551
发帖 246
注册 2006-09-21 12:35
19年会员
UID 63270
状态 离线
不能,我要的是把旧的文件夹中的文件按旧的目录树的结构用递增的文件名改名并放入新的文件夹中!!!
5 发表于 2006-11-18 03:10 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
偶和vkill都以为你显示排序呢!
提问时请将问题说详细。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
6 发表于 2006-11-18 03:14 ·  中国 江西 赣州 电信
高级用户
★★
论坛上抢劫的
积分 551
发帖 246
注册 2006-09-21 12:35
19年会员
UID 63270
状态 离线
晕,是我表达不清???不会吧!!!
7 发表于 2006-11-18 04:30 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
试试看这段,不知道合不合你要求。
放在 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个文件。
如果你文件更多,自己修改下。
8 发表于 2006-11-18 05:21 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  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 ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
9 发表于 2006-11-18 08:45 ·  中国 江西 赣州 电信
高级用户
★★
论坛上抢劫的
积分 551
发帖 246
注册 2006-09-21 12:35
19年会员
UID 63270
状态 离线
哎,看不懂for /r old %%i in (.) do (dir/s/a-d/b/on "%%i">>list.lst 2>nul)这一句,还有一个问题,就是生成的临时文件为什么会重复信息呢?贴上临时文件!!
附件
list.txt (14.85 KiB, 下载附件所需积分 1 点, 下载次数: 6)
10 发表于 2006-11-18 09:08 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  我晕,还以为你那些001、002之类的是文件夹名呢,原来是文件名啊。我在8F的代码已修改,请测试。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: