求个按列表批量重命名的批处理
问题:在某个目录下有一批文件夹,文件名有规则为01-101-201-301-401-501-602-102-202-302-402-502-6。。。另外就是有一个A.tx...
问题:
在某个目录下有一批文件夹,文件名有规则为
01-1
01-2
01-3
01-4
01-5
01-6
02-1
02-2
02-3
02-4
02-5
02-6
。。。
另外就是有一个A.txt文件,里面的资料为。
adfsaf 133231 31321321 9879879
gfegef 987987 46546565 3232133
retert 654665 sfsdfsdf werwerw
…………
最后结果就是以A.txt文档内第一列的数据重新命名上面的文件夹,
相对应
01-1改为adfsaf
01-2改为gfegef
以此类推
文件夹个娄与文本内的行数是相等的。
楼下的方法可以实现,不过我想找一个更为直接不用其它干与的批处理,减少手工操作部份,大神们支招了。。。。 展开
在某个目录下有一批文件夹,文件名有规则为
01-1
01-2
01-3
01-4
01-5
01-6
02-1
02-2
02-3
02-4
02-5
02-6
。。。
另外就是有一个A.txt文件,里面的资料为。
adfsaf 133231 31321321 9879879
gfegef 987987 46546565 3232133
retert 654665 sfsdfsdf werwerw
…………
最后结果就是以A.txt文档内第一列的数据重新命名上面的文件夹,
相对应
01-1改为adfsaf
01-2改为gfegef
以此类推
文件夹个娄与文本内的行数是相等的。
楼下的方法可以实现,不过我想找一个更为直接不用其它干与的批处理,减少手工操作部份,大神们支招了。。。。 展开
3个回答
展开全部
假定你的目录是d:\sample,并且01-1这类文件夹下的下面没有其它文件夹,先进命令提示行用
dir d:\sample /s /b /ad > d:\dir.txt
将目录列表输出至dir.txt
进入Excel,打开a.txt,分隔符号,选中空格,确定后删除后面多出的列,仅留下第一列,然后用记事本打开上面的dir.txt,复制,选中excel中的b1,粘贴
现在A列应该是a.txt的第一列,B列应该是目录名
在C1输入="Ren """&B1& """ """&A1&""""
选中C1到C列的最后一行,比如C1到C100,按Ctrl+D
复制C列数据,在记事本中保存为一个批处理文件,即.bat文件,然后双击运行这个bat
ps:注意最好备备份一下你的以前的数据
dir d:\sample /s /b /ad > d:\dir.txt
将目录列表输出至dir.txt
进入Excel,打开a.txt,分隔符号,选中空格,确定后删除后面多出的列,仅留下第一列,然后用记事本打开上面的dir.txt,复制,选中excel中的b1,粘贴
现在A列应该是a.txt的第一列,B列应该是目录名
在C1输入="Ren """&B1& """ """&A1&""""
选中C1到C列的最后一行,比如C1到C100,按Ctrl+D
复制C列数据,在记事本中保存为一个批处理文件,即.bat文件,然后双击运行这个bat
ps:注意最好备备份一下你的以前的数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
::在批处理中,使用类似于数组的变量记录文件夹名和A.txt文件第一列。
@echo off
setlocal enabledelayedexpansion
cd /d D:\新建文件夹 &rem 把这一行中的文件夹改为你的一批文件夹所在目录
set n=0
for /f %%i in ('dir /ad /b /o:n') do (
set /a n+=1
set a!n!=%%i
)
set n=0
for /f %%i in (A.txt) do (
set /a n+=1
set b!n!=%%i
)
for /l %%i in (1,1,%n%) do ren !a%%i! !b%%i!
pause
@echo off
setlocal enabledelayedexpansion
cd /d D:\新建文件夹 &rem 把这一行中的文件夹改为你的一批文件夹所在目录
set n=0
for /f %%i in ('dir /ad /b /o:n') do (
set /a n+=1
set a!n!=%%i
)
set n=0
for /f %%i in (A.txt) do (
set /a n+=1
set b!n!=%%i
)
for /l %%i in (1,1,%n%) do ren !a%%i! !b%%i!
pause
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,你这文件夹太有规律了,省事。把批处理、A.txt都放在那一堆文件所在的总文件夹下
@echo off
setlocal enabledelayedexpansion
set m=101
set n=1
set q=0
for /f "tokens=1" %%i in (A.txt)do (
ren !m:~1!-!n! %%i||(
set err=!err! !m:~1!-!n!&&set/a q+=1)
set/a n+=1
if !n!==7 (set n=1&set/a m+=1)
)
if %q% gtr 0 (
echo 下列文件夹可能不存在:
echo %err%
echo 请检查原因,其余已完成重命名
)else echo 已完成重命名
pause
@echo off
setlocal enabledelayedexpansion
set m=101
set n=1
set q=0
for /f "tokens=1" %%i in (A.txt)do (
ren !m:~1!-!n! %%i||(
set err=!err! !m:~1!-!n!&&set/a q+=1)
set/a n+=1
if !n!==7 (set n=1&set/a m+=1)
)
if %q% gtr 0 (
echo 下列文件夹可能不存在:
echo %err%
echo 请检查原因,其余已完成重命名
)else echo 已完成重命名
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询