标题: [文本处理] [已解决]批处理怎样任意选出文件夹中的一个文件将其重命名? [打印本页]
作者: mini123778 时间: 2010-8-13 10:32 标题: [已解决]批处理怎样任意选出文件夹中的一个文件将其重命名?
如题!具体情况是这样的。
在一个文件夹下面有大量的视频文件,都是.mpg格式的,它们的文件名没有特定的规律。
现在我想在一个指定的时间,比如说是60秒,随机抽取某个视频文件重命名为指定的文件名evideo.mpg,而其他的文件名保持原样,然后经过60秒后又从这里面随机抽取一个视频文件重命名为evideo.mpg,当然之前的那个evideo.mpg肯定要先改成其他的名称。
也就是说在特定的时间内这个文件夹里总保持着一个文件的名称为evideo.mpg,不过是随机的一个文件,然后在指定时间过后自动变为另外一个文件名称为evideo.mpg。
请教高手了。谢谢。小弟批处理功底不行啊。
[ 本帖最后由 mini123778 于 2010-8-16 10:58 编辑 ]
作者: FOR 时间: 2010-8-13 11:54
- @echo off
- for %%i in (*.mpg) do (
- set /a n+=1
- call set "#%%n%%=%%i"
- )
- :b1
- setlocal enabledelayedexpansion
- set /a i=!random!%%n+1
- if "!#%i%!"=="evideo.mpg" endlocal&goto b1
- if exist "evideo.mpg" (
- ren "evideo.mpg" "evideo.mpg_!#%i%!"
- ren "!#%i%!" "evideo.mpg"
- ren "evideo.mpg_!#%i%!" "!#%i%!"
- ) else (
- ren "!#%i%!" "evideo.mpg"
- )
- endlocal
- ping/n 60 127.1 >nul
- goto b1
复制代码
作者: mini123778 时间: 2010-8-13 12:18
2楼的代码我试了一下,它只改了一次以后就不变了啊。
作者: mini123778 时间: 2010-8-13 12:23 标题: 回复 2楼 的帖子
好像是在存在该文件名的时候就不会再变了。
作者: sgaizxt001 时间: 2010-8-13 13:18
修改了一下2楼的代码,不知道 可以不- @echo off
- :b1
- for %%i in (*.mpg) do (
- set /a n+=1
- call set "#%%n%%=%%i"
- )
- setlocal enabledelayedexpansion
- set /a i=!random!%%n+1
- if "!#%i%!"=="evideo.mpg" endlocal&goto b1
- if exist evideo.mpg ren evideo.mpg "!random:~0,5!.mpg"
- ren "!#%i%!" "evideo.mpg"
- endlocal
- ping/n 60 127.1 >nul
- goto b1
复制代码
作者: mini123778 时间: 2010-8-13 13:26 标题: 回复 5楼 的帖子
不行啊。。第一次的时候可以改,第二次的时候那个evideo还在,可是把其他某个给改了名字变成一个数字的文件名。
作者: sgaizxt001 时间: 2010-8-13 15:14
evideo是肯定还在的,你不是让他总保持着一个文件的名称为evideo.mpg?
作者: mini123778 时间: 2010-8-13 16:50 标题: 回复 7楼 的帖子
但是上面的代码始终是同一个文件叫evideo,没有变成其他的文件。
作者: FOR 时间: 2010-8-13 17:57
回复楼主:
请认真测试别人给你写的代码,这是对别人最起码的尊重
不要嘴巴一张,一句不行就等别人去给你查错。。。
经仔细检查2楼代码流程及语句,并没有发现错误
为对自己说的话负责还是作了以下测试
把mpg文件改为txt文件,把延时改为打开evideo.txt文件,
结果每次打开的evideo.txt内容都不同。
测试证明2楼代码没问题。
作者: TX_kakashi 时间: 2010-8-13 21:01
猜测lz是一直在播放着一个evideo吧,这样的话在cmd里是命令执行会失败,因为原来的evideo一直被占用着,可以把原来批处理里的ren替换成replace.
作者: mini123778 时间: 2010-8-16 09:19 标题: 回复 10楼 的帖子
是啊,这台做服务器的,其他机子从这台读取进行播放,我是要让客户端一段时间播放的就变换一次。
作者: mini123778 时间: 2010-8-16 09:20 标题: 回复 9楼 的帖子
我的确是有在测试,不知道视频和文本文件是否会有差别,我没用文本试过,但是用视频文件的确不行。
作者: mini123778 时间: 2010-8-16 10:57
楼上的真不好意思,2楼的代码是OK的。上周测的时候估计是眼睛看花了。
真不好意思啊。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |