dvbbs
收藏本页
联系我们
论坛帮助
dvbbs

>> Fortran语言开发经验交流
搜一搜相关精彩主题 
Fortran中文网Fortran中文网—Fortran语言经验交流Fortran语言开发经验交流 → [原创]将所在目录内JPG文件改名,以按随机次序重新排列

您是本帖的第 3398 个阅读者
树形 打印
标题:
[原创]将所在目录内JPG文件改名,以按随机次序重新排列
fortranboy
帅哥哟,离线,有人找我吗?
等级:论坛游民
文章:18
积分:682
门派:无门无派
注册:2006年10月3日
楼主
 用支付宝给fortranboy付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给fortranboy

发贴心情
[原创]将所在目录内JPG文件改名,以按随机次序重新排列
点击浏览该文件
本程序将所在目录内JPG文件改名 ,以按随机次序重新排列。
可用于对不具随机播放功能数码相框中的照片文件作乱序排列。
文件名改为4个字母组成,AAAA-ZZZZ,最多26^4=456976个。
作者:fortranboy
[此贴子已经被作者于2012-2-28 15:48:57编辑过]
ip地址已设置保密
2012/2/28 9:55:30
fortranboy
帅哥哟,离线,有人找我吗?
等级:论坛游民
文章:18
积分:682
门派:无门无派
注册:2006年10月3日
2
 用支付宝给fortranboy付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给fortranboy

发贴心情
$freeform              ! 将所在目录内JPG文件改名,以按随机次序重新排列
                             ! shizhengwei@yahoo.com.cn            2012-2-26
use msflib             ! 调用模块
character*255 fn
character*4 fn1       ! 修改文件名4字母组成,共26^4=456976种
character*6 h          ! 用于显示JPG文件个数的字符变量
character k
integer m,n,num,mark,mx
parameter (mx=456976)
logical s
type (file$info) :: info
write(*,'(1x,a)')   'shizhengwei@yahoo.com.cn                  2012-2-26'
write(*,'(1x,a)')   '本程序将所在目录内JPG文件改名,以按随机次序重新排列'
write(*,'(1x,a)')   '文件名改为4个字母组成,AAAA-ZZZZ,最多26^4=456976个'
write(*,'(1x,a,\)') '按Enter键继续,按其它键退出程序 ...'
k=getcharqq()
if(k.ne.char(13)) stop ' '
write(*,*)
write(*,*)
open(1,status='scratch',iostat=io)
if(io.ne.0) then
   write(*,'(1x,a,\)') '无法建立列表用的临时文件,按任意键结束'
   k=getcharqq()
   stop ' '
end if
call random_seed()     ! 由系统置随机数种子
mark=file$first             ! 设置搜寻文件的起始标志
  
do num=1,mx              ! 列表写入临时文件,避免重复查找已改文件
   n=getfileinfoqq('*.JPG',info,mark)
   if(mark.eq.file$last.or.mark.eq.file$error) exit
   fn=info.name
   write(1,'(a)') fn(1:n)
end do
num=num-1
if(num.eq.mx) then
   write(*,'(1x,a,\)') 'JPG文件太多,无法处理。按任意键结束'
else if(num.eq.0) then
   write(*,'(1x,a,\)') '没有找到JPG文件。按任意键结束'
else
   write(h,'(i6)') num
   write(*,'(1x,3a)') '共找到',h(6-int(log10(num*1.0)):6),'个JPG文件'
   rewind(1)              ! 根据num数值大小调整显示字符的长度
   do while(.true.)     ! 文件改名
      read(1,'(a)',iostat=io) fn
      if(io.ne.0) exit
      do while(.true.)
         call random_number(x)
         m=mx*x
         do i=4,1,-1   ! 10进制转26进制,形成新文件名
            fn1(i:i)=char(65+mod(m,26))
            m=m/26
         end do
         s=renamefileqq(trim(fn),fn1//'.JPG')
         if(s) exit          ! 改名失败再循环,针对重名等小概率情况
      end do
   end do
   write(*,'(1x,a,\)') 'JPG文件改名完毕,按任意键结束'
end if
close(1)                  ! 先关临时文件,防止直接关窗口造成文件残留
k=getcharqq()
end
[此贴子已经被作者于2012-2-28 15:53:10编辑过]
ip地址已设置保密
2012/2/28 9:56:46

 2   2   1/1页      1    
网上贸易 创造奇迹! 阿里巴巴 Alibaba
Powered By Dvbbs Version 7.1.0 Sp1
Copyright ©2005 - 2008 www.fortran.cn
页面执行时间 0.08984 秒, 5 次数据查询
京ICP备05056801号