![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 09:10 |
共 48,037 主题排行 / 350,122 发帖 / 今日 0 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问怎样实现将文件按照文本文件内容存储? |
| 可打印版本 1,385 / 8 |
| 第1楼 bakeyhe | 发表于 2006-11-03 01:46 |
| 新手上路 发帖 4 积分 10 | |
|
请问怎样实现将文件按照文本文件内容存储? 新人第一帖,希望大家支持
刚刚进入的批处理操作的美好境界,好多东西只靠自己的水平还不能实现,所以特来求助各位 具体是这样的: 某个文件夹里有很多文件,并且这些文件都存储在不同的子目录内 001_aa 001_bb 002 003 等等 同时这个文件夹里有一个txt文件,内容如下 001,名称1,分类1 002,名称2,分类2 003,名称3,分类3 我现在想把所有的文件按照这个txt文件的内容来重命名以及重新存储。 比如,"001_aa"这个文件,按照txt的要求,就改名为“名称1_aa”,并且在根目录下建立 “分类1”这个目录,在分类1下建立 “名称1”这个目录,把所有001_*的文件都复制到名称1这个新建的目录下。 不知道该怎么解决,希望能够得到各位的帮助,感谢各位!! |
|
| 第2楼 无奈何 | 发表于 2006-11-03 05:58 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
我很想帮你一下,但是你的描述我看不太明白,这也可能是到现在没有别的朋友回帖的原因吧。
你用 tree /f 列一下目录贴上来,001_aa、001_bb ...最终要求改成什么样的文件名你详细说一下。 |
|
| 第3楼 vkill | 发表于 2006-11-03 07:10 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
同楼上,没有看明白你到底想达到什么样的木的
|
|
| 第4楼 bakeyhe | 发表于 2006-11-03 22:05 |
| 新手上路 发帖 4 积分 10 | |
|
艾,果然我的描述能力很差……
我贴出目录树来~ ├─new │ ├─3班 │ │ └─阿四 │ │ ├─物理 │ │ │ 阿四_物理 │ │ │ │ │ ├─数学 │ │ │ 阿四_数学 │ │ │ │ │ └─化学 │ │ 阿四_化学 │ │ │ ├─2班 │ │ └─阿三 │ │ ├─物理 │ │ │ 阿三_物理 │ │ │ │ │ ├─数学 │ │ │ 阿三_数学 │ │ │ │ │ └─化学 │ │ 阿三_化学 │ │ │ └─1班 │ ├─阿二 │ │ ├─物理 │ │ │ 阿二_物理 │ │ │ │ │ ├─数学 │ │ │ 阿二_数学 │ │ │ │ │ └─化学 │ │ 阿二_化学 │ │ │ └─阿一 │ ├─物理 │ │ 阿一_物理 │ │ │ ├─数学 │ │ 阿一_数学 │ │ │ └─化学 │ 阿一_化学 │ └─old │ a.txt │ ├─数学 │ 001 │ 002 │ 003 │ 004 │ ├─化学 │ 001 │ 002 │ 003 │ 004 │ └─物理 001 002 003 004 其中,a.txt的内容如下 我就是希望能把old中的文件,按照 a.txt 的要求改名,并且新建文件夹,然后变成 new 这样的保存方式。 不知道这下有没有说清楚,呵呵~ |
|
| 第5楼 无奈何 | 发表于 2006-11-03 23:15 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
总算明白了,目录结构有些复杂,详细测试了一下没有问题了。
如果还有其他科目目录自己添加一下。
|
|
| 第6楼 bakeyhe | 发表于 2006-11-04 02:43 |
| 新手上路 发帖 4 积分 10 | |
|
感谢版主的帮助
可是还是有点小问题,如果原始的文件夹里的文件后缀名不同,那么这个该怎么做啊? 版主的代码似乎没有考虑到后缀名的问题哦 |
|
| 第7楼 无奈何 | 发表于 2006-11-04 04:15 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
这是按你四楼提供的例子写的。如此只需更改第 6 行为:
echo F|xcopy /y %%i\%%a* new\%%c\%%b\%%i\%%b_%%i 即可。 |
|
| 第8楼 bakeyhe | 发表于 2006-11-04 04:39 |
| 新手上路 发帖 4 积分 10 | |
|
感谢!
但是我改成这样才可以正常运行了 echo F|xcopy /y %%i\%%a.* new\%%c\%%b\%%i\%%b_%%i.* 嘿嘿 对了,我对这行有点不太明白…… for /f "tokens=1,2,3 delims=," %%a in (a.txt) do ( 我正在看坛子上的教程,不过也希望哪位能给我稍稍讲解一下拉~ 再次感谢! 补充一下~怪不得我刚才运行不成…… for /f "tokens=1,2,3 delims=," %%a in (a.txt) do ( 原来是这个逗号…………真是欲哭无泪啊~ 哈哈 不过现在找到原因了 继续研究ing [ Last edited by bakeyhe on 2006-11-4 at 05:04 AM ] |
|
| 第9楼 hxuan999 | 发表于 2006-11-04 06:24 |
| 中级用户 发帖 161 积分 337 | |
|
for /f "tokens=1,2,3 delims=," %%a in (a.txt) do (
md new\%%c\%%b 其中 delims=,是分隔符集。这里也就是“,”号。 tokens=1,2,3可以是tokens=x,y,m-n的形势。x,y可以指定为数字,m-n为一个范围。也就是把a.txt中的一行用“,”号分隔后,把指定位置的内容传给l了后面的%%a,%%b,%%c...等变量。 当然这里不能超过26个字母。如: for /f "tokens=2,4,5-7,8* delims=," %%a in (tt.txt) do ( echo %%a %%b %%c %%d %%e %%f %%g) 在tt.txt中内容有: aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk 11,22,33,44,55,66,77,88,99,00,1010 那么运行结果为: bb dd ee ff gg hh ii,jj,kk 22 44 55 66 77 88 99,00,1010 “*”是把8后所有的内容都给了%%g。 5-7也就是5,6,7是一样的。 我也是刚学,请指教。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |