关于查询文件夹是否存在并新建的问题
老师们好,学生有一些关于批量生成文件上的问题想请老师们指点下下面是我正在学习的源代码
这个代码运行后是在根目录下生成1-100编号的文件夹
我想把它变成每次运行只生成一个文件夹,每运行一次就先看是否有重名文件夹存在,有的话不要覆盖原来的,而是生成重名文件夹名+1的名字。
比如运行第一遍,根目录只产生第1号文件夹,第二遍是第1,2号两个文件夹,第三遍就是1,2,3号文件夹,以此类推
最终根目录下有100个文件夹
但它们是在每次运行程序下依次生成的,而不是一次性生成
program new_file_piliang
use DFPORT
implicit none
integer :: ierr
integer :: ffn, fn,ifID !前两项分别对应文件夹名称,文件名称
character(len = 50) :: fileFolderName
character(len = 50) :: fileName
do ffn = 1,100,1
write(fileFolderName,*) ffn
fileFolderName = ".\"//trim(adjustl(fileFolderName))//"_txt" !文件夹路径
ierr = system("md "//trim(fileFolderName))!这一行必须要有,没有则无法新建
end do
end program new_file_piliang
!>>>>>>>>>我也查到了一个每次查看是否存在重名txt文件的程序,有则在基础上新建一个txt<<<<<<<
PROGRAM MAIN
CHARACTER(LEN=80) :: FILENAME,FORM
INTEGER :: I
logical :: exist
integer :: p
exist = .TRUE.
I = 0
DO WHILE (exist)
SELECT CASE (I) !选择合适的后缀号码
CASE (0:9)
WRITE(FORM,'(I1)') I
CASE (10:99)
WRITE(FORM,'(I2)') I
CASE (100:999)
WRITE(FORM,'(I3)') I
CASE (1000:9999)
WRITE(FORM,'(I4)') I
END SELECT
WRITE(FILENAME,*) ".\scalar",TRIM(FORM),'.txt' !给文件名赋值为scalar+号码+格式
INQUIRE(directory=FILENAME,exist=exist) !再查询是否存在
I = I + 1!若存在,号码再加1
END DO
END PROGRAM
!>>>>>但不知这两二者该如何结合,或者如果有能更好解决我这个问题的方法,还请各位老师们不吝赐教
还有就是关于‘md’和‘cd’这两个,我也不明白他们的具体用法,也请老师们帮忙解惑,麻烦老师们了
cd等百度windows CMD。
PROGRAM MAIN
IMPLICIT NONE
CHARACTER(LEN=80) :: FILENAME,FORM
INTEGER :: I,N
logical :: exist
exist = .TRUE.
N=100
Do I=1,N,1
SELECT CASE (I) !选择合适的后缀号码
CASE (0:9)
WRITE(FORM,'(I1)') I
CASE (10:99)
WRITE(FORM,'(I2)') I
CASE (100:999)
WRITE(FORM,'(I3)') I
CASE (1000:9999)
WRITE(FORM,'(I4)') I
END SELECT
WRITE(FILENAME,*) "scalar",TRIM(FORM),'.txt' !给文件名赋值为scalar+号码+格式
INQUIRE(file=FILENAME,exist=exist) !查询是否存在
if (exist) then
!!!若存在,则无操作直接跳过
else
!!!若不存在,则创建:
!!! Linux 下:
call system('touch '//FILENAME) !!!创建文件
call system('mkdir '//FILENAME) !!!创建文件夹
!!! Windows 下,自行百度更多CMD:
!call system('mkdir '//FILENAME) !!!创建文件夹 (或者md)
endif
END DO
END PROGRAM md 就是创建文件夹,这是windows命令行的一个命令(而不是fortran,fortran只是调用它)
md 的意思是 make directory
而 cd 就是切换文件夹(也叫目录),同样是windows命令行的内容。
cd 的意思是 change current directory
program main
implicit none
character(len=80) :: filename
integer :: i,n
logical :: isExist
i = 1
Do
write(filename,'(i9)') i
filename="scalar"//trim(adjustl(filename))//".txt"
inquire(directory=filename,exist=isExist)
if (.not.isExist) then
!call system('touch '//filename) !!!创建文件
call system('mkdir '//filename) !!!创建文件夹
exit
endif
i=i+1
End Do
end program main xinger 发表于 2021-1-23 06:21
cd等百度windows CMD。
PROGRAM MAIN
感谢您的热心帮助我好好看下cmd的指令 fcode 发表于 2021-1-23 09:35
md 就是创建文件夹,这是windows命令行的一个命令(而不是fortran,fortran只是调用它)
md 的意思是 make...
感谢您的热心帮助,我好好学习下这个程序,可能还有不懂的地方要问麻烦老师们了
页:
[1]