|
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 |
|