Board logo

标题: [请教]如何生成文件名和文件夹相对应的数据? [打印本页]

作者: Billunique     时间: 2007-9-21 16:31    标题: [请教]如何生成文件名和文件夹相对应的数据?

各位兄台:

  现在因为需要,我想进行以下操作:

  1.生成1.txt、2.txt......10.txt
  2.生成文件夹1、文件夹2.....文件夹10
  3.将文件和文件夹依名称对应存放,即1.txt放在文件夹1.....10.txt放在文件夹10

  请问该怎么操作呢?恳请赐教。(问之前在新人必看帖http://www.cn-dos.net/forum/viewthread.php?tid=27667&fpage=1已经搜了,没找到-_-!!)


  另外,如果想做下扩展:把文件夹设为2层,文件夹1下有文件夹11,文件夹2下有文件夹22....以此类推,而把1.txt~10.txt置于第2层下,怎么做呢?多谢多谢~!:D
作者: lxmxn     时间: 2007-9-21 16:45

@echo off&SetLocal EnableDelayedExpansion
for /L %%a in (1,1,10) do (
        set ok=文件夹%%a\文件夹%%a%%a
        md !ok!&&cd.>!ok!\%%a.txt
)

作者: Billunique     时间: 2007-9-21 17:41
哈,代码成功!为啥自己就知道一一对应了呢,是因为在一次循环里,生成的值都是一样的吧?

再请教下,嘿嘿:)(其实这才是我真正想做的)

  现在我的硬盘里有很多这样的文件夹,比如“刘德华”、“张学友”,其下会有一些子文件夹,结构就像上面说的那样,可能是一层,可能二层,也可能更多。
├─文件夹1
│  └─文件夹11
│          1.mp3
│          ...
├─文件夹10
│  └─文件夹1010
│          10.mp3
│          ...
├─文件夹2
│  └─文件夹22
│          2.mp3
│          ...
├─文件夹3
│  └─文件夹33
│          3.mp3
│          ...
├─文件夹4
│  └─文件夹44
│          4.mp3
│          ...
  假设我当前文件夹是“刘德华”,现在想把底下的所有MP3拷到当前路径下,(这个我会,嘿嘿,for /f %%a in ('dir /b /s *.mp3') do copy %%a,菜鸟也就这水平-_-!),再把所有子文件夹包括里面的内容全部删除(使我一进“刘德华”这个文件夹就展现所有的mp3歌曲),请问怎么操作?

[ Last edited by Billunique on 2007-9-21 at 05:43 PM ]
作者: lxmxn     时间: 2007-9-21 20:12
试试这个:
@echo off
for /r .\ %%a in (*.mp3) do (
        move /-Y "%%a" .\
)
for /d %%a in (*) do @echo rd /s/q "%%a"

作者: Billunique     时间: 2007-9-22 14:21
嘿嘿,多谢老兄,老让你回答这么弱的问题实在惭愧...
作者: Billunique     时间: 2007-9-22 16:52
再请教一个,希望这个可以稍有点难度:)

  我想批量生成1.txt....~10.txt,同时在这些文件里都生成内容line1.....~line50,请问该怎么做?(说明:不用拷贝的方法实现)

  再进一步,如果想在1.txt里生成的内容是:
test1 line1
test1 line2
....
test1 line50
  想在2.txt里生成的内容是:
test2 line1
test2 line2
....
test2 line50
  以此类推,直至10.txt,怎么完成呢?我想应该得用到For的嵌套,可是我用不好:(
作者: lxmxn     时间: 2007-9-22 17:02
有时间多看看for命令的教程.
for /L %%a in (1,1,10) do (
    for /L %%b in (1,1,50) do (
        echo line%%a line%%b>>%%a.txt
    )
)

作者: Billunique     时间: 2007-9-22 17:38
兄台,你的方法我试过,结果没有成功。跟你的代码一比较才发现,原来我的第一个do和括号挨着,写成了“do(”......
作者: lxmxn     时间: 2007-9-22 17:59


  Quote:
Originally posted by Billunique at 2007-9-22 17:38:
兄台,你的方法我试过,结果没有成功。

没有成功?我不信!
作者: Billunique     时间: 2007-9-22 18:16
你的代码没有问题,绝对成功!哈,我是说之前我自己写的没有成功,原因是do后面没加空格......
作者: lzmuhioin     时间: 2007-9-23 23:41


  Quote:
Originally posted by lxmxn at 2007-9-21 04:45 PM:
@echo off&SetLocal EnableDelayedExpansion
for /L %%a in (1,1,10) do (
        set ok=文件夹%%a\文件夹%%a%%a
        md !ok!&&cd.>!ok!\%%a.txt
)

请问lxmxn版主在md !ok!&&cd.>!ok!\%%a.txt语句中>起的是什么作用呢?

[ Last edited by lzmuhioin on 2007-9-23 at 11:46 PM ]
作者: lxmxn     时间: 2007-9-24 00:18
RE lzmuhioin:

> 的作用是将>前的命令产生的标准输出输出到>后面的文件中,文件的内容被重写。
有时间多看看基础教程。