回 帖 发 新 帖 刷新版面

主题:有关批处理的文件名问题

最近在鼓捣批处理文件,在坛子上找到的是这个:

character(80) :: filename,tmp

print*,'please enter the file name:'
read*,filename           !输入的可以是多个文件中的任意一个文件名
filename=filename(1:index(filename,'.'))

do i=1,num_file  !num_file--文件数
  write(tmp,*)i
  open(10,file=trim(filename)//trim(adjustl(tmp))//'.txt',status='old')
  ...   !处理文件数据
  close(10)
end do

我得到的数据文件名全部是 aaaaa_1_[b]1[/b].dat  这类。(黑体的1为变换数字,1,2,3,...)
改成 filename=filename(1:index(filename,'_'))则只能显示出 aaaaa_[b]1[/b]这部分。

恳请师兄师姐指点。

回复列表 (共8个回复)

沙发

你期望得到什么呢?

板凳

我希望能read到整个文件名。
现在显示的是'无法找到aaaaa_1.dat', (是没有啊原本是aaaaa_1_1.dat  - -lll) 

请师兄指教!

3 楼

看书,内部文件:)

4 楼

临近圣诞放假好多事 - -lll

我没有碰过PDB文件为了调用数据已经花费很多时间,现下只有这个小问题待解决。已经没有时间仔细花几天时间找书了,希望从师兄那里直接‘取经’,谢谢!

5 楼

已解决。

删掉
print*,'please enter the file name:'
read*,filename           !输入的可以是多个文件中的任意一个文件名
filename=filename(1:index(filename,'.'))
改成
filename='aaaaa_1_'
就好了。

不过还是想请教一下filename(1:index(filename,'.'))这个部分的含义。

6 楼

index(字符串1,字符串2)返回的值是:字符串2 在 字符串1 中,首次出现的位置:)

7 楼

楼主问问题的方式有问题,总以为别人是你自己,那么了解。

我始终没有看懂:

1.你在 read 语句里输入了什么?

2.你实际的文件命名是怎样的?

你这样的解决方式并不是很完美,因为固定了这个命名规则。

文件名其实就是一个字符串变量,如果找不到文件,比较好的办法就是在 Open 语句上下个断点,看看文件名是什么,怎么来的?为什么得到错误的文件名?

8 楼

Sorry, my Chinese is not so good.

我来回复

您尚未登录,请登录后再回复。点此登录或注册