[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样任意选出文件夹中的一个文件将其重命名?

如题!具体情况是这样的。
在一个文件夹下面有大量的视频文件,都是.mpg格式的,它们的文件名没有特定的规律。
现在我想在一个指定的时间,比如说是60秒,随机抽取某个视频文件重命名为指定的文件名evideo.mpg,而其他的文件名保持原样,然后经过60秒后又从这里面随机抽取一个视频文件重命名为evideo.mpg,当然之前的那个evideo.mpg肯定要先改成其他的名称。

也就是说在特定的时间内这个文件夹里总保持着一个文件的名称为evideo.mpg,不过是随机的一个文件,然后在指定时间过后自动变为另外一个文件名称为evideo.mpg。

请教高手了。谢谢。小弟批处理功底不行啊。

[ 本帖最后由 mini123778 于 2010-8-16 10:58 编辑 ]

  1. @echo off
  2. for %%i in (*.mpg) do (
  3.    set /a n+=1
  4.    call set "#%%n%%=%%i"
  5. )
  6. :b1
  7. setlocal enabledelayedexpansion
  8. set /a i=!random!%%n+1
  9. if "!#%i%!"=="evideo.mpg" endlocal&goto b1
  10. if exist "evideo.mpg" (
  11.    ren "evideo.mpg" "evideo.mpg_!#%i%!"
  12.    ren "!#%i%!" "evideo.mpg"
  13.    ren "evideo.mpg_!#%i%!" "!#%i%!"
  14.    ) else (
  15.      ren "!#%i%!" "evideo.mpg"
  16. )
  17. endlocal
  18. ping/n 60 127.1 >nul
  19. goto b1
复制代码

TOP

2楼的代码我试了一下,它只改了一次以后就不变了啊。

TOP

回复 2楼 的帖子

好像是在存在该文件名的时候就不会再变了。

TOP

修改了一下2楼的代码,不知道 可以不
  1. @echo off
  2. :b1
  3. for %%i in (*.mpg) do (
  4.    set /a n+=1
  5.    call set "#%%n%%=%%i"
  6. )
  7. setlocal enabledelayedexpansion
  8. set /a i=!random!%%n+1
  9. if "!#%i%!"=="evideo.mpg" endlocal&goto b1
  10. if exist evideo.mpg ren evideo.mpg "!random:~0,5!.mpg"
  11. ren "!#%i%!" "evideo.mpg"
  12. endlocal
  13. ping/n 60 127.1 >nul
  14. goto b1
复制代码
努力学习,努力挣分

TOP

回复 5楼 的帖子

不行啊。。第一次的时候可以改,第二次的时候那个evideo还在,可是把其他某个给改了名字变成一个数字的文件名。

TOP

evideo是肯定还在的,你不是让他总保持着一个文件的名称为evideo.mpg?
努力学习,努力挣分

TOP

回复 7楼 的帖子

但是上面的代码始终是同一个文件叫evideo,没有变成其他的文件。

TOP

回复楼主:
请认真测试别人给你写的代码,这是对别人最起码的尊重
不要嘴巴一张,一句不行就等别人去给你查错。。。
经仔细检查2楼代码流程及语句,并没有发现错误

为对自己说的话负责还是作了以下测试
把mpg文件改为txt文件,把延时改为打开evideo.txt文件,
结果每次打开的evideo.txt内容都不同。
测试证明2楼代码没问题。

TOP

猜测lz是一直在播放着一个evideo吧,这样的话在cmd里是命令执行会失败,因为原来的evideo一直被占用着,可以把原来批处理里的ren替换成replace.

TOP

回复 10楼 的帖子

是啊,这台做服务器的,其他机子从这台读取进行播放,我是要让客户端一段时间播放的就变换一次。

TOP

回复 9楼 的帖子

我的确是有在测试,不知道视频和文本文件是否会有差别,我没用文本试过,但是用视频文件的确不行。

TOP

楼上的真不好意思,2楼的代码是OK的。上周测的时候估计是眼睛看花了。

真不好意思啊。

TOP

返回列表