Board logo

标题: [文件操作] 批处理如何提取目录内的第一个文件名作为目录名? [打印本页]

作者: zhao3    时间: 2014-5-9 23:33     标题: 批处理如何提取目录内的第一个文件名作为目录名?

因为目录名是无序的数字,里在文件名有意义。
作者: hu_contact    时间: 2014-5-10 09:39

本帖最后由 hu_contact 于 2014-5-10 10:05 编辑

文件夹的名字不能有空格
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.') do (
  3. for /f "delims=" %%p in ('dir %cd%\%%i /b/p') do ren %cd%\%%i [-%%p-]
  4. )
  5. exit
复制代码

作者: zhao3    时间: 2014-5-10 12:11

能不能再改进一下:

嗯,那如果是这样,能不能先判断有无空格,若有,空格用_替换。

然后在原目录名加上第一个文件的名称(不含文件的扩展名最好。)
作者: zhao3    时间: 2014-5-10 12:11

都只记得提要求,都忘记说谢谢了,谢谢二楼。。
作者: hu_contact    时间: 2014-5-10 20:26

本帖最后由 hu_contact 于 2014-5-10 21:16 编辑

回复 4# zhao3
我直接把每个要处理的文件夹名字先重命名为waitingDispose再处理了

不知道不同文件夹里的文件有没有重名的,要是有,可能会出现文件夹重名的情况导致出问题
可以为每个文件夹添加序号解决这个问题(下面这个不包含序号)
原文件名和第一个文件的名字之间用“+”连接的
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.') do (
  3. ren "%cd%\%%i" "waitingDispose"
  4.         for /f "delims=" %%p in ('dir %cd%\waitingDispose /b/p') do (
  5. for /f "delims=." %%k in ("%%p") do set name=%%k
  6. setlocal enabledelayedexpansion
  7. ren "%cd%\waitingDispose" "%%i+!name!"
  8. endlocal
  9. )     
  10. )
  11. exit
复制代码

作者: zhao3    时间: 2014-5-10 20:39

哦,明白人的意思,比如:
A\11.txt
B\11.txt
C\11.txt
就会出现同名目录了。。
这个我还没有想到呢。
那能不能我把文件名先预格式化:
把它预格式化成
[A]\11.TXT
[B]\11.TXT
[C]\11.TXT
那么重命名后,会不会实现文件命名,
[A]11
[B]11
[C]11

在我的众多的文件分类中,发现这样提取第一个文件命名并不是最科学的方法。
我现在可以进入一个目录后,把每个文件名前加上目录名,但不能在上级目录遍历下级目录,如果能遍历,那么我再使用搜索,把所有的文件找出现,复制到一个文件下,然后哪些文件可以重新分到一个新的目录,就比较清楚了。。。
不知道我的表述,是否清楚。。
比如
A\第一章 第一节 aaaa
A\第一章 第二节 aaaa
A\第一章 第三节 aaaa

b\第一章 第一节 aaaabbb
b\第一章 第二节 aaaabbb
b\第一章 第三节 aaaabbb

c\第一章 第一节 ccc
c\第一章 第二节 ccc
c\第一章 第三节 ccc

如果在每个目录前加一个预格式化的内容,则不会把ABC三个目录中的第一章 第一节的文件排列在一起了。

以下是需要进入每一个文件中,执行后,可以在文件名前加上目录名的代码:
  1. @echo off
  2. set n=%cd%
  3. :aaa
  4. if not "%n:\=%"=="%n%" set "n=%n:*\=%" & goto aaa
  5. for /f "delims=" %%a in ('dir /a-d /b *.*') do ren "%%a" "%n%_%%a"
  6. pause & exit
复制代码

作者: hu_contact    时间: 2014-5-10 20:53

回复 6# zhao3


你直接把具体的东西拿出来好啦

不用编数据,这样更麻烦
作者: zhao3    时间: 2014-5-10 20:56

哦。好的,呵呵。其实你的那个提取文件重命名,已很好用了。谢谢了。麻烦你了。。。。




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