fortran批处理.000文件,批量生成.dat文件。我现在只能生成一个2012072002.dat。谢谢

怎么改open(unit=23,file="d:\ssdat\2012072002.dat",form='binary')这一行呀!谢谢程序如下:programlistf... 怎么改open(unit=23, file="d:\ssdat\2012072002.dat",form='binary') 这一行呀! 谢谢 程序如下:program listfile
character*100 fPath
character*200 path
character*7 outPut
parameter(n=512)
integer i
character*8 sta(n)
integer nlev,nflag
integer hig(n),station(n)
real lat(n),lon(n),rain(n)
integer m2
character*9 m1

fPath="*.000"outPut="dir.txt"
call ListToFile(fPath,outPut)
open(1,file='dir.txt',status='old')
10 continue
read(1,*,end=20)path
!print*,index(Path,"dir.txt")
if(index(Path,"dir.txt")==0)then
!print*,path
open(2,file=''//trim(Path)//'',status='old')

do i=1,13 read (2,*)
enddo

read(2,'(a9,i4)') m1,m2
do i=1,m2 read (2 ,*) station(i),lon(i),lat(i),hig(i),rain(i)
enddo
open(unit=23, file="d:\ssdat\2012072002.dat",form='binary')
nlev=1
nflag=1
tim=0.0
do i=1,284
sta(i)=char(i)
write(23 )sta(i),lat(i),lon(i),tim,nlev,nflag
write(23)rain(i)
enddo
nlev=0
nflag=0
write(23 )sta(1),lat(1),lon(1),tim,nlev,nflag

close(23)

close(2)

endif
goto 10
20 close(1)

end program listfile
subroutine ListToFile(fPath,outPut)
character*(*),InTent(In):: fPath,outPut
character*100 CMD
CMD="dir /a-d/b/s "//trim(fPath)//" >"//trim(outPut)
call SYSTEM(CMD)
endsubroutine
展开
 我来答
天河流纹石
2013-04-23 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4046万
展开全部
关于 Fortran 批处理文件。有多种方法,他们各有其适用性。
1.如果文件名是有一定规律的。
a. 那么在程序里按照规律构建文件名(字符串)。Open 时给予该字符串,作为文件名。
2.如果文件名没有规律。
b. 可以使用 System 语句,调用 dir 命令,把所有文件名写入某文件。然后读取该文件,每读一行,获得一个文件名,Open 处理一次。
这就是你代码里的方法。

c. 如果你使用的是 Visual Fortran 系列编译器,该编译器为你提供了 GetFileInfoQQ 函数,可以实现文件循环。
d. 如果你的编译器没有 GetFileInfoQQ 函数,但可以使用 Windows API 函数接口,那么 windows 为你提供了 FindFileFirst 和 FindFileNext 两个函数用来穷举文件。

我个人比较不喜欢 b 方法。
其中,a 方法通用性最好。但它要求文件名是有一定规律的。(比如 201101.txt 到 201109.txt ,是有规律的)
c 方法只适合于 Visual Fortran 编译器
d 方法适用于几乎所有 windows 平台编译器。

如果你对哪个方法有兴趣,请追问我。
追问
哈哈! 老朋友! 好详细! 我是个新手,我程序里面的批处理方法都是找的现成的程序改了改,都不是很明白它的意思。 就感觉应该把这个open(unit=23, file="d:\ssdat\2012072002.dat",form='binary')里面用啥命令改改就行,完全是感觉,哈哈! 应该不会这么简单,不知道应该怎么弄呢? 用b方法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式