中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]有关random对文件重命名的问题
作者:
标题: [已解决]有关random对文件重命名的问题 上一主题 | 下一主题
icyheart
中级用户




积分 216
发帖 81
注册 2007-8-6
状态 离线
『楼 主』:  [已解决]有关random对文件重命名的问题

我想对当前目录下的文本文件进行随机的命名,可是遇到一个问题,只能对一个文本进行重命名,而其它的则不变
@echo off
set /a b=%random%%%100+1
for /r %%a in (*.txt) do (
set /a c=%random:~0,2%
ren %%~dpnsa.txt %c%.txt)
pause

[ Last edited by icyheart on 2007-9-7 at 06:27 PM ]

附件 1: 1.jpg (2007-9-7 16:48, 17.68 K,下载次数: 1)




Crossings must be my teacher
Modest progress can be
2007-9-7 16:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 2 楼』:  

再FOR执行的时候%random:~0,2%的值已经固定了。
LZ可以把@echo off改成@echo on看看。
这时就需要用变量扩展延迟了。

2007-9-7 16:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 3 楼』:  

%random%也会产生一样的数值啊

重命名前,先判断,再命名

2007-9-7 16:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 4 楼』:  

总之,要用变量扩展延迟!
%random%重复的可能性为1/32768.难道LZ的运气。。。

2007-9-7 17:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
icyheart
中级用户




积分 216
发帖 81
注册 2007-8-6
状态 离线
『第 5 楼』:  

要用变量延迟该怎么写呢

[ Last edited by icyheart on 2007-9-7 at 05:11 PM ]



Crossings must be my teacher
Modest progress can be
2007-9-7 17:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
icyheart
中级用户




积分 216
发帖 81
注册 2007-8-6
状态 离线
『第 6 楼』:  

@echo off
set /a b=%random%%%100+1
:start
for /r %%a in (*.txt) do (
set /a c=%random:~0,2%
if %%~na neq %c% (ren %%~dpnsa.txt %c%.txt) else goto start)
pause
这样也不行



Crossings must be my teacher
Modest progress can be
2007-9-7 17:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 7 楼』:  

%~XX不叫变量扩展延迟..

@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a b=%random%%%100+1
for /r %%a in (*.txt) do (
set /a c=!random:~0,2!
ren %%~dpnsa.txt !c!.txt)
pause

2007-9-7 18:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
icyheart
中级用户




积分 216
发帖 81
注册 2007-8-6
状态 离线
『第 8 楼』:  

想出来啦这样的应该是
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /r %%a in (*.txt) do (
set c=!random!
ren %%~dpnsa.txt !c!.txt)
pause



Crossings must be my teacher
Modest progress can be
2007-9-7 18:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: