Board logo

标题: [求助]如何给多级目录下的文件批量改名 [打印本页]

作者: rockyuan     时间: 2010-6-20 15:31    标题: [求助]如何给多级目录下的文件批量改名

假设目录树的结构如下
A1{B2[C3(D4;c.txt); b.txt]; a.txt }  A1 B2 C3 D4都是文件夹。
意思是 A1下包含B2和a.txt,B2下包含C3和 b.txt,C3下包含D4和c.txt. D4只包含d.txt.
(这里的B2 C3 D4 a b c 都是未知的有很多很多)

类似a.txt 不用改名
类似b.txt 改成B2-b.txt
类似c.txt 改成C3-c.txt
类似d.txt 改成D4-d.txt

最后将所有文本文件都移动到A1下。
各位帮忙看下

[ Last edited by rockyuan on 2010-6-20 at 16:28 ]
作者: rockyuan     时间: 2010-6-20 16:51    标题: [求助]如何在文件名前面加前缀。

需要在一批文件夹下面加前缀
如1.txt 改成a_1.txt
   2.txt 改成a_2.txt
作者: Hanyeguxing     时间: 2010-6-20 17:52
移动目录D:\rec下所有子目录中的文件(包括系统或隐藏属性)到D:\rec目录下,并同时改名:
@echo off&setlocal enabledelayedexpansion
set "hanye=D:\rec"
for /F "delims=" %%a in ('dir /s/b/a-d "%hanye%\*.*"') do if /i not "%%~dpa"=="%hanye%\" (
    set "guxing=%%~dpa"
    for %%b in ("!guxing:~0,-1!") do move "%%a" "%hanye%\%%~nb-%%~nxa"
)
[ Last edited by Hanyeguxing on 2010-6-20 at 17:59 ]
作者: Hanyeguxing     时间: 2010-6-20 18:03


  Quote:
Originally posted by rockyuan at 2010-6-20 16:51:
需要在一批文件夹下面加前缀
如1.txt 改成a_1.txt
   2.txt 改成a_2.txt

已回复:http://www.cn-dos.net/forum/viewthread.php?tid=51677&fpage=1
作者: rockyuan     时间: 2010-6-20 18:12
非常感谢。但是有点缺陷,如果是B2/C3/D4下的文件 到了A1下 其名称是D4-*txt。 能不能改成B2-C3-D4-*.txt
另外想问个类似的问题。
如问题所说的情况,如果现在不想把文件都移到1级目录,而是移动到2级目录,应该怎么改,移动完成后再将所有3 4级目录删除,该怎么做。(原来是提升N级目录,现在提升N-1级)

[ Last edited by rockyuan on 2010-6-20 at 18:24 ]
作者: rockyuan     时间: 2010-6-20 18:24
非常感谢
作者: Hanyeguxing     时间: 2010-6-20 18:45


  Quote:
Originally posted by rockyuan at 2010-6-20 18:12:
非常感谢。但是有点缺陷,如果是B2/C3/D4下的文件 到了A1下 其名称是D4-*txt。 能不能改成B2-C3-D4-*.txt
另外想问个类似的问题。
如问题所说的情况,如果现在不想把文件都移到1级目录,而是移动到2级目录,应该怎么改,移动完成后再将所有3 4级目录删除,该怎么做。(原来是提升N级目录,现在提升N-1级)

1,那么原来N-1下的文件怎么办?
2,你在要求中没这么说,怎么能算缺陷呢?
3,支持:如果是B2/C3/D4下的文件 到了A1下 其名称是D4-*txt。 能不能改成B2-C3-D4-*.txt
@echo off&setlocal enabledelayedexpansion
set "han=D:\rec"
for /F "delims=" %%a in ('dir /s/b/a-d "%han%\*.*"') do if /i not "%%~dpa"=="%han%\" (
    set "ye=%%~dpa"&set "ye=!ye:%han%\=!"&set "ye=!ye:\=-!"
    move "%%a" "%han%\!ye!%%~nxa"
)
[ Last edited by Hanyeguxing on 2010-6-20 at 18:56 ]
作者: rockyuan     时间: 2010-6-20 18:57
不是缺陷
我没说清楚,言语上的错误不好意思。。

N-1的不用改的。
就是让很多层次的文件,最后形成一个只有A1{B1[*.TXT];B2[*.txt];B3....Bn}这样。 并且通过文件名能判断出它原来在什么地方。

[ Last edited by rockyuan on 2010-6-20 at 18:59 ]
作者: rockyuan     时间: 2010-6-20 19:02
按照你后面给的代码 我好像应该回答是N+1
作者: Hanyeguxing     时间: 2010-6-20 19:12


  Quote:
Originally posted by rockyuan at 2010-6-20 19:02:
按照你后面给的代码 我好像应该回答是N+1

具体说是哪些目录,我不能在那里乱猜,最好举例说明
作者: rockyuan     时间: 2010-6-20 19:57
原来的文件
A1
   -x1.txt
   -B1
     -x2.txt
   -B2
     -x3.txt
     -c1
        -x4.txt
     -c2
        -x5.txt
        -d1
           -x6.txt


现在要转变成这样
A1
   -x1.txt
   -B1
     -x2.txt
   -B2
     -x3.txt
     -c1-x4.txt
     -c2-x5.txt
     -c2-d1-x6.txt

然后将Cn Dn 这些目录都删除

这样表达行吗

[ Last edited by rockyuan on 2010-6-20 at 20:04 ]