中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: [已结]批量更改文件名 上一主题 | 下一主题
hackxw
初级用户




积分 28
发帖 28
注册 2008-2-14
来自 山东省淄博市
状态 离线
『楼 主』:  [已结]批量更改文件名

根目录:“%userprofile%\桌面\aaa\”下全是名字乱七八糟的html文件,我想这文件夹里所有的这种文件改成有规则的文件名,扩展名不变。如:
1.html
2.html
3.html
...


代码该怎么写啊...请求大虾~~~

[ Last edited by HAT on 2008-12-28 at 22:48 ]

2008-12-23 21:47
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (860593218)  编辑帖子  回复  引用回复
dddyjq1
初级用户





积分 175
发帖 108
注册 2008-5-19
状态 离线
『第 2 楼』:  

@echo off
for /f "delims=" %%i in ('dir /b *.html^|findstr /i "^[1-9].*"') do (
for /f "usebackq delims=(" %%a in ("%%i") do ren "%%i" "%%a%%~xi"
)
pause

抄来不知对否

2008-12-23 23:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  


@echo off & setlocal EnableDelayedExpansion
for %%a in ("%userprofile%\桌面\aaa\*.html") do (
  set /a n+=1
  ren "%%a" !n!.html
)


2008-12-24 00:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wewe
新手上路





积分 7
发帖 5
注册 2008-12-5
状态 离线
『第 4 楼』:  

不知为什么,我复制最后一句 !n!.html 老是被识别为常量,而不是变量。

2008-12-24 01:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lixiaodaoaaa
新手上路





积分 9
发帖 5
注册 2008-2-15
状态 离线
『第 5 楼』:  回个话


for %%i in (*.html) do (for /l %%a in (1,1,20) do (ren %%i %%a.html))
20可以随便该个数字,可以实现目的
没事,报错是因为文件夹的数字不对



http://xd.com
2008-12-24 01:58
查看资料  发送邮件  发短消息 网志  OICQ (346825741)  编辑帖子  回复  引用回复
hackxw
初级用户




积分 28
发帖 28
注册 2008-2-14
来自 山东省淄博市
状态 离线
『第 6 楼』:  

三楼的可以用,但是文件名不规则。楼上的也可以用,但是得文件需要再aaa目录下。
谁可以再提供以下~~~

2008-12-24 21:24
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (860593218)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  Re 6楼

你在顶楼的问题描述不就是说的aaa目录下么?你到底想怎样?



2008-12-24 21:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wewe
新手上路





积分 7
发帖 5
注册 2008-12-5
状态 离线
『第 8 楼』:  

请教:

我试验了下例子
for %%a in ("%userprofile%\桌面\*.html") do (
  set /a n+=1
  ren "%%a" !n!.html
)

结果命名为 !n!.html 而不是 1.html。看来是把 !n! 识别成常量了。试了几次都是这样,请问这是什么原因呢?

2008-12-25 00:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hqso
初级用户





积分 43
发帖 39
注册 2008-11-13
状态 离线
『第 9 楼』:  

呵呵  那是因为 同一过程中刚赋予变量的值不能立刻用于同一过程中的其他的地方
建议把那个!n! 的值 echo 到某个文件中,在通过for语句 读出 那个文件中字符

2008-12-25 13:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackxw
初级用户




积分 28
发帖 28
注册 2008-2-14
来自 山东省淄博市
状态 离线
『第 10 楼』:  

回七楼版主,我想要的是当前批处理再任意目录下就可以批量更名桌面下的aaa文件夹下的所有的html文件,而不是当前批处理必须放在aaa目录下才能用。。。五楼那个是必须把当前批处理放在aaa目录下才能使用的。。。

[ Last edited by hackxw on 2008-12-27 at 20:59 ]

2008-12-27 20:56
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (860593218)  编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 11 楼』:  试试这个:


@echo off
cd /d %userprofile%\桌面\aaa\
for %%a in (*.html) do (
  set /a n+=1
  set name="%%a"
  setlocal enabledelayedexpansion
  ren !name! !n!.html
  endlocal
)


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-12-28 22:47


2008-12-27 22:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:  Re 10楼

I 真实服了 You!
有啥问题不能更新到顶楼么?如果再来个其它人想帮你解决问题,还得一层一层楼的往下看,看到10楼才能知道你要干啥。这不是浪费时间么?



2008-12-28 00:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 13 楼』:  

小黑把版主招来了.....
在网吧草草的看了题目,不知道自己的老作品可不可以. 有选项的
@echo off &setlocal enabledelayedexpansion
title made by http://hi.baidu.com/523066680
:write-geshi
set /p geshi="请输入将被重命名的文件格式,如jpg:"
if not exist *.%geshi% echo.不存在该格式 &goto write-geshi
if "%geshi%"=="" echo.不存在该格式 &goto write-geshi
cls
:write-left
echo.给文件名输入特征部分,输入a-则命名为a-001,a-002……
echo.直接enter则名字直接为序号
echo.不要输入特殊字符
set /p tezheng=":"
:write-lei
set /p lei="选择类型,输入 001 或1 :"
if "%lei%"=="001" (call :001 &goto :over)
if "%lei%"=="1" (call :1) else (echo.输入错误 &goto :write-lei)
:over
echo over! 按任何键继续 &pause>nul &exit

:001
set /a i=0,j=0,k=0
for /f "tokens=*" %%a in ('dir *.%geshi% /b') do (
set /a k+=1
if !k! equ 10 (set j=)
if !k! equ 100 (set i=)
ren "%%a" "%tezheng%!i!!j!!k!.%geshi%" >nul 2>nul
echo !i!!j!!k!
)
goto :eof

:1
set /a k=0
for /f "tokens=*" %%a in ('dir *.%geshi% /b') do (
set /a k+=1
ren "%%a" "%tezheng%!k!.%geshi%"
echo !k!
)
goto:eof


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-12-28 22:47




综合型编程论坛

我的作品索引
  
2008-12-28 15:04
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
hackxw
初级用户




积分 28
发帖 28
注册 2008-2-14
来自 山东省淄博市
状态 离线
『第 14 楼』:  re 11 and 13

太好了,结合11楼和13楼的终于弄好了!!!严重感谢你们!!!
%t%是扩展名。。。
特别是十一楼的cd /d %userprofile%\桌面\%t%这个命令,我怎么没想到呢~~ 这个命令结合五楼的也是可以的。。。

终于解决了,再次感谢你们。。。!!!

cd /d %userprofile%\桌面\%t%
setlocal enabledelayedexpansion
set /a k=0
for /f "tokens=*" %%a in ('dir "*.%t%" /b') do (
set /a k+=1
ren "%%a" "!k!.%t%"
)





Thank you very much!!!!!!!!!!!!!!

2008-12-28 21:23
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (860593218)  编辑帖子  回复  引用回复
hackxw
初级用户




积分 28
发帖 28
注册 2008-2-14
来自 山东省淄博市
状态 离线
『第 15 楼』:  

^_^

   此帖被 -2 点积分    点击查看详情   
评分人:【 HAT 分数: -2  时间:2009-1-1 01:05


2008-12-31 22:40
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (860593218)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: